66use PhpParser \Node ;
77use PhpParser \Node \Expr \Array_ ;
88use PhpParser \Node \Expr \ClassConstFetch ;
9- use PhpParser \Node \Expr \Closure ;
109use PhpParser \Node \Expr \MethodCall ;
1110use PhpParser \Node \Expr \PropertyFetch ;
1211use PhpParser \Node \Expr \StaticCall ;
1312use PhpParser \Node \Expr \Variable ;
1413use PhpParser \Node \VariadicPlaceholder ;
15- use PhpParser \NodeVisitor ;
1614use PHPStan \Analyser \Scope ;
1715use PHPStan \Reflection \ClassReflection ;
1816use PHPStan \Reflection \ReflectionProvider ;
2321use Rector \Rector \AbstractRector ;
2422use Rector \Reflection \ReflectionResolver ;
2523use Rector \StaticTypeMapper \ValueObject \Type \FullyQualifiedObjectType ;
26- use Rector \Symfony \NodeAnalyzer \SymfonyPhpClosureDetector ;
2724use Rector \ValueObject \PhpVersion ;
2825use Rector \VersionBonding \Contract \MinPhpVersionInterface ;
2926use Symplify \RuleDocGenerator \ValueObject \CodeSample \CodeSample ;
@@ -46,16 +43,11 @@ final class FirstClassCallableRector extends AbstractRector implements MinPhpVer
4643 * @readonly
4744 */
4845 private ReflectionResolver $ reflectionResolver ;
49- /**
50- * @readonly
51- */
52- private SymfonyPhpClosureDetector $ symfonyPhpClosureDetector ;
53- public function __construct (ArrayCallableMethodMatcher $ arrayCallableMethodMatcher , ReflectionProvider $ reflectionProvider , ReflectionResolver $ reflectionResolver , SymfonyPhpClosureDetector $ symfonyPhpClosureDetector )
46+ public function __construct (ArrayCallableMethodMatcher $ arrayCallableMethodMatcher , ReflectionProvider $ reflectionProvider , ReflectionResolver $ reflectionResolver )
5447 {
5548 $ this ->arrayCallableMethodMatcher = $ arrayCallableMethodMatcher ;
5649 $ this ->reflectionProvider = $ reflectionProvider ;
5750 $ this ->reflectionResolver = $ reflectionResolver ;
58- $ this ->symfonyPhpClosureDetector = $ symfonyPhpClosureDetector ;
5951 }
6052 public function getRuleDefinition (): RuleDefinition
6153 {
@@ -92,18 +84,15 @@ public function name()
9284 */
9385 public function getNodeTypes (): array
9486 {
95- return [Array_::class, Closure::class ];
87+ return [Array_::class];
9688 }
9789 /**
98- * @param Array_|Closure $node
99- * @return StaticCall|MethodCall|null|NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN
90+ * @param Array_ $node
91+ * @return \PhpParser\Node\Expr\ StaticCall|\PhpParser\Node\Expr\ MethodCall|null
10092 */
10193 public function refactor (Node $ node )
10294 {
103- if ($ node instanceof Closure) {
104- if ($ this ->symfonyPhpClosureDetector ->detect ($ node )) {
105- return NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN ;
106- }
95+ if ($ node ->getAttribute (AttributeKey::IS_INSIDE_SYMFONY_PHP_CLOSURE )) {
10796 return null ;
10897 }
10998 $ scope = ScopeFetcher::fetch ($ node );
0 commit comments