From 2c27d006cf60bf2b15458d40efd2b6c5dbef6943 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Tue, 6 Jan 2026 07:54:05 +0700 Subject: [PATCH 1/3] [DeadCode] Skip with elseif/else on RemoveNextSameValueConditionRector --- .../Fixture/skip_with_elseif.php.inc | 20 +++++++++++++++++++ .../RemoveNextSameValueConditionRector.php | 11 ++++++++++ 2 files changed, 31 insertions(+) create mode 100644 rules-tests/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector/Fixture/skip_with_elseif.php.inc diff --git a/rules-tests/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector/Fixture/skip_with_elseif.php.inc b/rules-tests/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector/Fixture/skip_with_elseif.php.inc new file mode 100644 index 00000000000..1b025a4c02a --- /dev/null +++ b/rules-tests/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector/Fixture/skip_with_elseif.php.inc @@ -0,0 +1,20 @@ +elseifs !== [] || $stmt->else instanceof Else_) { + continue; + } + // first condition must be without side effect if ($this->sideEffectNodeDetector->detect($stmt->cond)) { continue; @@ -108,6 +114,11 @@ public function refactor(Node $node): ?Node continue; } + // only when no elseif/else in next stmt + if ($nextStmt->elseifs !== [] || $nextStmt->else instanceof Else_) { + continue; + } + $stmt->stmts = array_merge($stmt->stmts, $nextStmt->stmts); // remove next node From 42a67acbd09ca90ade4ffe3a3f05f10dcec2fa20 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 6 Jan 2026 00:57:10 +0000 Subject: [PATCH 2/3] [ci-review] Rector Rectify --- .../Stmt/RemoveNextSameValueConditionRector.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php b/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php index 044c16b31fa..35ce49071bc 100644 --- a/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php +++ b/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php @@ -90,9 +90,11 @@ public function refactor(Node $node): ?Node if (! $stmt instanceof If_) { continue; } - // only when no elseif/else in current if - if ($stmt->elseifs !== [] || $stmt->else instanceof Else_) { + if ($stmt->elseifs !== []) { + continue; + } + if ($stmt->else instanceof Else_) { continue; } @@ -113,9 +115,11 @@ public function refactor(Node $node): ?Node if (! $this->nodeComparator->areNodesEqual($stmt->cond, $nextStmt->cond)) { continue; } - // only when no elseif/else in next stmt - if ($nextStmt->elseifs !== [] || $nextStmt->else instanceof Else_) { + if ($nextStmt->elseifs !== []) { + continue; + } + if ($nextStmt->else instanceof Else_) { continue; } From b164c7bb32de5860a1bfd7ee02041a7edbcf2fb5 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 6 Jan 2026 00:59:32 +0000 Subject: [PATCH 3/3] [ci-review] Rector Rectify --- .../Rector/Stmt/RemoveNextSameValueConditionRector.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php b/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php index 35ce49071bc..25f91a2f187 100644 --- a/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php +++ b/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php @@ -90,10 +90,12 @@ public function refactor(Node $node): ?Node if (! $stmt instanceof If_) { continue; } + // only when no elseif/else in current if if ($stmt->elseifs !== []) { continue; } + if ($stmt->else instanceof Else_) { continue; } @@ -115,10 +117,12 @@ public function refactor(Node $node): ?Node if (! $this->nodeComparator->areNodesEqual($stmt->cond, $nextStmt->cond)) { continue; } + // only when no elseif/else in next stmt if ($nextStmt->elseifs !== []) { continue; } + if ($nextStmt->else instanceof Else_) { continue; }