diff --git a/packages/NodeTypeResolver/src/NodeTypeResolver.php b/packages/NodeTypeResolver/src/NodeTypeResolver.php index cb37f72cbb0..a6020dd65aa 100644 --- a/packages/NodeTypeResolver/src/NodeTypeResolver.php +++ b/packages/NodeTypeResolver/src/NodeTypeResolver.php @@ -406,7 +406,14 @@ final class NodeTypeResolver return []; } - // PHPStan + // skip anonymous classes, ref https://github.com/rectorphp/rector/issues/1574 + if ($node instanceof Expr\New_) { + $className = $this->nameResolver->resolve($node->class); + if ($className === null || Strings::contains($className, 'AnonymousClass')) { + return []; + } + } + $type = $nodeScope->getType($node); $typesInStrings = $this->typeToStringResolver->resolve($type); diff --git a/packages/Symfony/tests/Rector/New_/StringToArrayArgumentProcessRector/Fixture/skip_anonymous_class.php.inc b/packages/Symfony/tests/Rector/New_/StringToArrayArgumentProcessRector/Fixture/skip_anonymous_class.php.inc new file mode 100644 index 00000000000..197e22240a6 --- /dev/null +++ b/packages/Symfony/tests/Rector/New_/StringToArrayArgumentProcessRector/Fixture/skip_anonymous_class.php.inc @@ -0,0 +1,14 @@ +add( + new class() { + } + ); + } +} diff --git a/packages/Symfony/tests/Rector/New_/StringToArrayArgumentProcessRector/StringToArrayArgumentProcessRectorTest.php b/packages/Symfony/tests/Rector/New_/StringToArrayArgumentProcessRector/StringToArrayArgumentProcessRectorTest.php index b980367afaa..1e881352f8c 100644 --- a/packages/Symfony/tests/Rector/New_/StringToArrayArgumentProcessRector/StringToArrayArgumentProcessRectorTest.php +++ b/packages/Symfony/tests/Rector/New_/StringToArrayArgumentProcessRector/StringToArrayArgumentProcessRectorTest.php @@ -17,6 +17,7 @@ final class StringToArrayArgumentProcessRectorTest extends AbstractRectorTestCas __DIR__ . '/Fixture/fixture3.php.inc', __DIR__ . '/Fixture/fixture4.php.inc', __DIR__ . '/Fixture/with_sprintf.php.inc', + __DIR__ . '/Fixture/skip_anonymous_class.php.inc', ]); }