From 914349ca92cb1df4463b46f541c6e249045bd4ca Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 19 Feb 2024 01:30:31 +0700 Subject: [PATCH] [CodeQuality] Skip not autoloaded parent class on CompleteDynamicPropertiesRector (#5636) --- .../Fixture/skip_undefined_parent_class.php.inc | 11 +++++++++++ .../Rector/Class_/CompleteDynamicPropertiesRector.php | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_undefined_parent_class.php.inc diff --git a/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_undefined_parent_class.php.inc b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_undefined_parent_class.php.inc new file mode 100644 index 00000000000..22e4b0dd072 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_undefined_parent_class.php.inc @@ -0,0 +1,11 @@ +value = 5; + } +} diff --git a/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php b/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php index 30f02ed5c81..4e65c38b9b6 100644 --- a/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php +++ b/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php @@ -5,6 +5,7 @@ namespace Rector\CodeQuality\Rector\Class_; use PhpParser\Node; +use PhpParser\Node\Name\FullyQualified; use PhpParser\Node\Stmt\Class_; use PHPStan\Reflection\ClassReflection; use PHPStan\Reflection\ReflectionProvider; @@ -149,7 +150,11 @@ private function shouldSkipClass(Class_ $class): bool return true; } - return $classReflection->hasMethod('__get'); + if ($classReflection->hasMethod('__get')) { + return true; + } + + return $class->extends instanceof FullyQualified && ! $this->reflectionProvider->hasClass($class->extends->toString()); } /**