diff --git a/rules-tests/DeadCode/Rector/Property/RemoveDefaultValueFromAssignedPropertyRector/Fixture/skip_protected_property_on_non_final_class.php.inc b/rules-tests/DeadCode/Rector/Property/RemoveDefaultValueFromAssignedPropertyRector/Fixture/skip_protected_property_on_non_final_class.php.inc new file mode 100644 index 00000000000..f595777395e --- /dev/null +++ b/rules-tests/DeadCode/Rector/Property/RemoveDefaultValueFromAssignedPropertyRector/Fixture/skip_protected_property_on_non_final_class.php.inc @@ -0,0 +1,13 @@ +value = $value; + } +} diff --git a/rules/DeadCode/Rector/Property/RemoveDefaultValueFromAssignedPropertyRector.php b/rules/DeadCode/Rector/Property/RemoveDefaultValueFromAssignedPropertyRector.php index e00ac05b75e..ca54313c38b 100644 --- a/rules/DeadCode/Rector/Property/RemoveDefaultValueFromAssignedPropertyRector.php +++ b/rules/DeadCode/Rector/Property/RemoveDefaultValueFromAssignedPropertyRector.php @@ -11,6 +11,7 @@ use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Return_; +use Rector\Configuration\Parameter\FeatureFlags; use Rector\NodeAnalyzer\PropertyFetchAnalyzer; use Rector\PhpParser\Node\BetterNodeFinder; use Rector\Rector\AbstractRector; @@ -89,6 +90,7 @@ public function refactor(Node $node): ?Node } $hasChanged = false; + $isFinal = $node->isFinal() || FeatureFlags::treatClassesAsFinal($node); foreach ($node->getProperties() as $property) { // untyped properties are handled by RemoveNullPropertyInitializationRector @@ -100,6 +102,10 @@ public function refactor(Node $node): ?Node continue; } + if (! $property->isPrivate() && ! $isFinal) { + continue; + } + foreach ($property->props as $propertyProperty) { if (! $propertyProperty->default instanceof Expr) { continue;