diff --git a/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_abstract_class.php.inc b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_abstract_class.php.inc new file mode 100644 index 00000000000..db0d695efea --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_abstract_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 3ca7963115c..9def47c7b58 100644 --- a/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php +++ b/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php @@ -114,6 +114,11 @@ private function shouldSkipClass(Class_ $class): bool return true; } + // abstract class property might be accessed from child class + if ($class->isAbstract()) { + return true; + } + $className = (string) $this->getName($class); if (! $this->reflectionProvider->hasClass($className)) { return true;