From de8ebf23c9038a88d08df1d5e5f2243c026fe61f Mon Sep 17 00:00:00 2001 From: Johannes Przymusinski Date: Sun, 23 Jul 2023 11:32:46 +0200 Subject: [PATCH] [BUGFIX] Ensure proper reprint with attributes for finalized classes --- .../Fixture/class_with_attribute.php.inc | 21 +++++++++++++++++++ .../FinalizeClassesWithoutChildrenRector.php | 6 ++++++ 2 files changed, 27 insertions(+) create mode 100644 rules-tests/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector/Fixture/class_with_attribute.php.inc diff --git a/rules-tests/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector/Fixture/class_with_attribute.php.inc b/rules-tests/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector/Fixture/class_with_attribute.php.inc new file mode 100644 index 00000000000..8ae62b74394 --- /dev/null +++ b/rules-tests/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector/Fixture/class_with_attribute.php.inc @@ -0,0 +1,21 @@ + +----- + diff --git a/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php b/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php index 123832e6df0..e7e1b9bf7d7 100644 --- a/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php +++ b/rules/Privatization/Rector/Class_/FinalizeClassesWithoutChildrenRector.php @@ -12,6 +12,7 @@ use Rector\Core\Rector\AbstractRector; use Rector\Core\Reflection\ReflectionResolver; use Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer; +use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\Privatization\NodeManipulator\VisibilityManipulator; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -100,6 +101,11 @@ public function refactor(Node $node): ?Node return null; } + if ($node->attrGroups !== []) { + // improve reprint with correct newline + $node->setAttribute(AttributeKey::ORIGINAL_NODE, null); + } + $this->visibilityManipulator->makeFinal($node); return $node;