skip analysis of new anonymous classes in method call [closes #1574]

This commit is contained in:
Tomas Votruba 2019-06-07 14:07:48 +02:00
parent 3add1822b4
commit 7c60f52450
3 changed files with 23 additions and 1 deletions

View File

@ -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);

View File

@ -0,0 +1,14 @@
<?php
namespace Rector\Symfony\Tests\Rector\New_\StringToArrayArgumentProcessRector\Fixture;
class SkipAnonymousClass
{
public function buildForm($builder): void
{
$builder->add(
new class() {
}
);
}
}

View File

@ -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',
]);
}