|
12 | 12 | use PhpParser\Node\Expr\BinaryOp\NotIdentical; |
13 | 13 | use PhpParser\Node\Expr\Cast\Bool_; |
14 | 14 | use PhpParser\Node\Expr\ClassConstFetch; |
| 15 | +use PhpParser\Node\Expr\Closure; |
15 | 16 | use PhpParser\Node\Expr\FuncCall; |
16 | 17 | use PhpParser\Node\Expr\Instanceof_; |
17 | 18 | use PhpParser\Node\Expr\MethodCall; |
18 | 19 | use PhpParser\Node\Expr\StaticCall; |
19 | 20 | use PhpParser\Node\Expr\Variable; |
20 | 21 | use PhpParser\Node\Name\FullyQualified; |
| 22 | +use PhpParser\NodeVisitor; |
21 | 23 | use PHPStan\Reflection\ClassReflection; |
22 | 24 | use Rector\PhpParser\Node\Value\ValueResolver; |
23 | 25 | use Rector\PHPStan\ScopeFetcher; |
@@ -76,14 +78,23 @@ public function test() |
76 | 78 | */ |
77 | 79 | public function getNodeTypes(): array |
78 | 80 | { |
79 | | - return [FuncCall::class]; |
| 81 | + return [Closure::class, FuncCall::class]; |
80 | 82 | } |
81 | 83 |
|
82 | 84 | /** |
83 | | - * @param FuncCall $node |
| 85 | + * @param Closure|FuncCall| $node |
| 86 | + * @return StaticCall|MethodCall|null|int |
84 | 87 | */ |
85 | | - public function refactor(Node $node): StaticCall|MethodCall|null |
| 88 | + public function refactor(Node $node): StaticCall|MethodCall|null|int |
86 | 89 | { |
| 90 | + if ($node instanceof Closure) { |
| 91 | + if ($node->static) { |
| 92 | + return NodeVisitor::DONT_TRAVERSE_CHILDREN; |
| 93 | + } |
| 94 | + |
| 95 | + return null; |
| 96 | + } |
| 97 | + |
87 | 98 | if ($node->isFirstClassCallable()) { |
88 | 99 | return null; |
89 | 100 | } |
|
0 commit comments