From d345b92f59afd7000a105cfaa1a6d4b104433893 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 13 Jul 2026 10:57:51 +0200 Subject: [PATCH] [CodeQuality] Skip abstract class on CompleteDynamicPropertiesRector --- .../Fixture/skip_abstract_class.php.inc | 11 +++++++++++ .../Rector/Class_/CompleteDynamicPropertiesRector.php | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_abstract_class.php.inc 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;