From 4bcb8abc2cf54758e6afe6f2da210218683ccf87 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 8 Oct 2026 23:40:34 +0200 Subject: [PATCH] [CodeQuality] Skip anonymous class in AssertEmptyNullableObjectToAssertInstanceofRector --- .../Fixture/skip_anonymous_class.php.inc | 17 +++++++++++++++++ ...tyNullableObjectToAssertInstanceofRector.php | 6 ++++++ 2 files changed, 23 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/skip_anonymous_class.php.inc diff --git a/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/skip_anonymous_class.php.inc b/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/skip_anonymous_class.php.inc new file mode 100644 index 00000000..5789865a --- /dev/null +++ b/rules-tests/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector/Fixture/skip_anonymous_class.php.inc @@ -0,0 +1,17 @@ +assertNotNull($someObject); + } +} diff --git a/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php b/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php index 57e321c9..456b6f68 100644 --- a/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php +++ b/rules/CodeQuality/Rector/MethodCall/AssertEmptyNullableObjectToAssertInstanceofRector.php @@ -10,6 +10,7 @@ use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Identifier; use PhpParser\Node\Name\FullyQualified; +use PHPStan\Reflection\ClassReflection; use PHPStan\Type\ObjectType; use PHPStan\Type\TypeCombinator; use PHPStan\Type\UnionType; @@ -107,6 +108,11 @@ public function refactor(Node $node): ?Node return null; } + // anonymous class has no writable class name, PHPStan uses an internal AnonymousClass name + if ($pureType->getClassReflection() instanceof ClassReflection && $pureType->getClassReflection()->isAnonymous()) { + return null; + } + $node->name = new Identifier('assertInstanceOf'); $fullyQualified = new FullyQualified($pureType->getClassName());