From 333a052c879cd6940bca8b18c6e39f8a22ad67fc Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 30 Mar 2026 18:14:47 +0700 Subject: [PATCH] [DeadCode] Handle crash on multi elseif on RemoveDeadIfBlockRector --- .../multi_elseif_with_binaryop.php.inc | 33 +++++++++++++++++++ .../Rector/If_/RemoveDeadIfBlockRector.php | 4 +-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 rules-tests/DeadCode/Rector/If_/RemoveDeadIfBlockRector/Fixture/multi_elseif_with_binaryop.php.inc diff --git a/rules-tests/DeadCode/Rector/If_/RemoveDeadIfBlockRector/Fixture/multi_elseif_with_binaryop.php.inc b/rules-tests/DeadCode/Rector/If_/RemoveDeadIfBlockRector/Fixture/multi_elseif_with_binaryop.php.inc new file mode 100644 index 00000000000..675d2959501 --- /dev/null +++ b/rules-tests/DeadCode/Rector/If_/RemoveDeadIfBlockRector/Fixture/multi_elseif_with_binaryop.php.inc @@ -0,0 +1,33 @@ + +----- + diff --git a/rules/DeadCode/Rector/If_/RemoveDeadIfBlockRector.php b/rules/DeadCode/Rector/If_/RemoveDeadIfBlockRector.php index 5240e01f930..b581deb9a06 100644 --- a/rules/DeadCode/Rector/If_/RemoveDeadIfBlockRector.php +++ b/rules/DeadCode/Rector/If_/RemoveDeadIfBlockRector.php @@ -102,12 +102,12 @@ public function refactor(Node $node): int|null|If_ } foreach ($node->elseifs as $elseif) { - $keep_elseifs = array_filter( + $keep_elseifs = array_values(array_filter( $node->elseifs, fn (ElseIf_ $elseif): bool => $elseif->stmts !== [] || $this->sideEffectNodeDetector->detect( $elseif->cond ) - ); + )); if (count($node->elseifs) !== count($keep_elseifs)) { $node->elseifs = $keep_elseifs; return $this->refactor($node) ?? $node;