From 50378fc1cd17831d6a71948d82b109083547e0f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mihailo=20=20Todosi=C4=87?= <34360486+mickeytodd@users.noreply.github.com> Date: Thu, 27 Apr 2023 20:49:06 +0200 Subject: [PATCH] [Privatization] Skip variable assign append on ChangeReadOnlyVariableWithDefaultValueToConstantRector (#3687) * fix: checking for other modifying types * fix: added fixture * fix: changed class name * fix: checking if parent class is null * fix: checking for all types of assigning --- .../skip_variable_array_append.php.inc | 21 +++++++++++++++++++ src/NodeManipulator/AssignManipulator.php | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 rules-tests/Privatization/Rector/Class_/ChangeReadOnlyVariableWithDefaultValueToConstantRector/Fixture/skip_variable_array_append.php.inc diff --git a/rules-tests/Privatization/Rector/Class_/ChangeReadOnlyVariableWithDefaultValueToConstantRector/Fixture/skip_variable_array_append.php.inc b/rules-tests/Privatization/Rector/Class_/ChangeReadOnlyVariableWithDefaultValueToConstantRector/Fixture/skip_variable_array_append.php.inc new file mode 100644 index 00000000000..26bf9780710 --- /dev/null +++ b/rules-tests/Privatization/Rector/Class_/ChangeReadOnlyVariableWithDefaultValueToConstantRector/Fixture/skip_variable_array_append.php.inc @@ -0,0 +1,21 @@ + $value) { + $arr[$value] ??= 0; + $arr[$value] += $key; + } + return $arr; + } +} diff --git a/src/NodeManipulator/AssignManipulator.php b/src/NodeManipulator/AssignManipulator.php index 346daf9bb02..05eed796abe 100644 --- a/src/NodeManipulator/AssignManipulator.php +++ b/src/NodeManipulator/AssignManipulator.php @@ -93,7 +93,7 @@ public function isLeftPartOfAssign(Node $node): bool $parentNode = $parentNode->getAttribute(AttributeKey::PARENT_NODE); } - if ($parentNode instanceof Assign) { + if ($parentNode instanceof Assign || $parentNode instanceof AssignOp || $parentNode instanceof PreDec || $parentNode instanceof PreInc || $parentNode instanceof PostDec || $parentNode instanceof PostInc) { return $parentNode->var === $previousParent; } }