Skip to content

Commit 309cada

Browse files
authored
[Configs] Skip first class callable on RemoveConstructorAutowireServiceRector (#858)
* [Configs] Skip first class callable on RemoveConstructorAutowireServiceRector * [Configs] Skip first class callable on RemoveConstructorAutowireServiceRector * [Configs] Skip first class callable on RemoveConstructorAutowireServiceRector
1 parent 3b48279 commit 309cada

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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 Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
9+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
10+
11+
return static function (ContainerConfigurator $containerConfigurator): void {
12+
$services = $containerConfigurator->services();
13+
14+
$services->defaults()->autowire();
15+
16+
$services->set('named-class', AnotherClassWithoutConstructor::class)
17+
->arg('$passedAsDependency', service(...));
18+
};
19+
20+
?>

rules/Configs/Rector/Closure/RemoveConstructorAutowireServiceRector.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ public function refactor(Node $node): ?Node
129129
return null;
130130
}
131131

132+
if ($node->isFirstClassCallable()) {
133+
return null;
134+
}
135+
132136
$argName = $node->getArgs()[0]
133137
->value;
134138
$serviceArgExpr = $node->getArgs()[1]
@@ -186,6 +190,10 @@ private function matchSetServicesClass(MethodCall $methodCall): ?string
186190
return null;
187191
}
188192

193+
if ($methodCall->isFirstClassCallable()) {
194+
return null;
195+
}
196+
189197
foreach ($methodCall->getArgs() as $arg) {
190198
if (! $arg->value instanceof ClassConstFetch) {
191199
continue;
@@ -209,6 +217,10 @@ private function isParameterTypeMatchingPassedArgExprClass(
209217
return false;
210218
}
211219

220+
if ($serviceArgExpr->isFirstClassCallable()) {
221+
return false;
222+
}
223+
212224
$dependencyServiceExpr = $serviceArgExpr->getArgs()[0]
213225
->value;
214226
$dependencyService = $this->valueResolver->getValue($dependencyServiceExpr);

0 commit comments

Comments
 (0)