Skip to content

Commit fd27daf

Browse files
authored
add fixture (#856)
1 parent a9dfc5d commit fd27daf

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\Symfony\Tests\Configs\Rector\Closure\RemoveConstructorAutowireServiceRector\Fixture;
6+
7+
use Rector\Symfony\Tests\Configs\Rector\Closure\RemoveConstructorAutowireServiceRector\Source\AnotherClassWithoutConstructor;
8+
use Rector\Symfony\Tests\Configs\Rector\Closure\RemoveConstructorAutowireServiceRector\Source\PassedAsDependency;
9+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
10+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
11+
12+
return static function (ContainerConfigurator $containerConfigurator): void {
13+
$services = $containerConfigurator->services();
14+
15+
$services->defaults()->autowire();
16+
17+
$services->set('named-class', AnotherClassWithoutConstructor::class)
18+
->arg('$passedAsDependency', service(PassedAsDependency::class));
19+
};
20+
21+
?>
22+
-----
23+
<?php
24+
25+
declare(strict_types=1);
26+
27+
namespace Rector\Symfony\Tests\Configs\Rector\Closure\RemoveConstructorAutowireServiceRector\Fixture;
28+
29+
use Rector\Symfony\Tests\Configs\Rector\Closure\RemoveConstructorAutowireServiceRector\Source\AnotherClassWithoutConstructor;
30+
use Rector\Symfony\Tests\Configs\Rector\Closure\RemoveConstructorAutowireServiceRector\Source\PassedAsDependency;
31+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
32+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
33+
34+
return static function (ContainerConfigurator $containerConfigurator): void {
35+
$services = $containerConfigurator->services();
36+
37+
$services->defaults()->autowire();
38+
39+
$services->set('named-class', AnotherClassWithoutConstructor::class);
40+
};
41+
42+
?>

rules/Configs/Rector/Closure/RemoveConstructorAutowireServiceRector.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,19 @@ private function matchSetServicesClass(MethodCall $methodCall): ?string
182182
$methodCall = $methodCall->var;
183183
}
184184

185-
/** @var MethodCall $methodCall */
186-
$firstArg = $methodCall->getArgs()[0];
187-
if (! $firstArg->value instanceof ClassConstFetch) {
185+
if (! $methodCall instanceof MethodCall) {
188186
return null;
189187
}
190188

191-
return $this->valueResolver->getValue($firstArg->value);
189+
foreach ($methodCall->getArgs() as $arg) {
190+
if (! $arg->value instanceof ClassConstFetch) {
191+
continue;
192+
}
193+
194+
return $this->valueResolver->getValue($arg->value);
195+
}
196+
197+
return null;
192198
}
193199

194200
private function isParameterTypeMatchingPassedArgExprClass(

0 commit comments

Comments
 (0)