From f257b10df15331bc6bf3cfa9fc2c44b685a0076b Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 30 Aug 2021 15:16:55 +0700 Subject: [PATCH] [DeadCode][CodeQuality] Handle SimplifyIfElseToTernaryRector + RemoveUnusedAssignVariableRector (#789) Co-authored-by: Bl00D4NGEL --- .../RemoveUnusedAssignVariableRector.php | 7 ++++ .../Issues/Issue6655/Fixture/fixture.php.inc | 23 ++++++++++++ ...fElseAndRemoveUnusedAssignVariableTest.php | 36 +++++++++++++++++++ .../Issue6655/config/configured_rule.php | 12 +++++++ 4 files changed, 78 insertions(+) create mode 100644 tests/Issues/Issue6655/Fixture/fixture.php.inc create mode 100644 tests/Issues/Issue6655/SimplifyIfElseAndRemoveUnusedAssignVariableTest.php create mode 100644 tests/Issues/Issue6655/config/configured_rule.php 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); +};