diff --git a/rules/DeadCode/Rector/Assign/RemoveUnusedAssignVariableRector.php b/rules/DeadCode/Rector/Assign/RemoveUnusedAssignVariableRector.php index 97dff1e7d12..97106ba3f32 100644 --- a/rules/DeadCode/Rector/Assign/RemoveUnusedAssignVariableRector.php +++ b/rules/DeadCode/Rector/Assign/RemoveUnusedAssignVariableRector.php @@ -96,6 +96,13 @@ public function refactor(Node $node): ?Node return null; } + // @see https://github.com/rectorphp/rector/issues/6655 + // verify current statement is a Node before removing or use its Assign Expr + $currentStatement = $node->getAttribute(AttributeKey::CURRENT_STATEMENT); + if (! $currentStatement instanceof Node) { + return null; + } + // is scalar assign? remove whole if (! $this->sideEffectNodeDetector->detect($node->expr)) { $this->removeNode($node); diff --git a/tests/Issues/Issue6655/Fixture/fixture.php.inc b/tests/Issues/Issue6655/Fixture/fixture.php.inc new file mode 100644 index 00000000000..7c00207faf6 --- /dev/null +++ b/tests/Issues/Issue6655/Fixture/fixture.php.inc @@ -0,0 +1,23 @@ + +----- + diff --git a/tests/Issues/Issue6655/SimplifyIfElseAndRemoveUnusedAssignVariableTest.php b/tests/Issues/Issue6655/SimplifyIfElseAndRemoveUnusedAssignVariableTest.php new file mode 100644 index 00000000000..31f0195e516 --- /dev/null +++ b/tests/Issues/Issue6655/SimplifyIfElseAndRemoveUnusedAssignVariableTest.php @@ -0,0 +1,36 @@ +doTestFileInfo($fileInfo); + } + + /** + * @return Iterator + */ + public function provideData(): Iterator + { + return $this->yieldFilesFromDirectory(__DIR__ . '/Fixture'); + } + + public function provideConfigFilePath(): string + { + return __DIR__ . '/config/configured_rule.php'; + } +} diff --git a/tests/Issues/Issue6655/config/configured_rule.php b/tests/Issues/Issue6655/config/configured_rule.php new file mode 100644 index 00000000000..958d5cf320a --- /dev/null +++ b/tests/Issues/Issue6655/config/configured_rule.php @@ -0,0 +1,12 @@ +services(); + + $services->set(SimplifyIfElseToTernaryRector::class); + $services->set(RemoveUnusedAssignVariableRector::class); +};