From dda0484840c0f14568e5999ce5d682901204e416 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 6 Jan 2024 12:00:31 +0700 Subject: [PATCH 1/3] [CodeQuality] Handle crash with call inside loop on SimplifyForeachToCoalescingRector --- .../Fixture/skip_call_inside.php.inc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector/Fixture/skip_call_inside.php.inc diff --git a/rules-tests/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector/Fixture/skip_call_inside.php.inc b/rules-tests/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector/Fixture/skip_call_inside.php.inc new file mode 100644 index 00000000000..043ceb825b7 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector/Fixture/skip_call_inside.php.inc @@ -0,0 +1,18 @@ + $v) { + if (strtolower($k) === $lowercaseHeader) { + return $v; + } + } + + return null; + } +} From 1dccfaf837e016d0256d3b37d7b4a47dd69ce3ed Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 6 Jan 2024 12:19:55 +0700 Subject: [PATCH 2/3] fix --- .../Rector/Foreach_/SimplifyForeachToCoalescingRector.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php b/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php index e0b2960f6a0..f8f0d973235 100644 --- a/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php +++ b/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php @@ -113,6 +113,11 @@ public function refactor(Node $node): ?Node $nextStmt = $node->stmts[$key + 1] ?? null; $return = $this->processForeachNodeWithReturnInside($foreach, $foreachReturnOrAssign, $nextStmt); + + if ($return === null) { + continue; + } + $node->stmts[$key] = $return; // cleanup next return From 10ec4ef5d7257ae12f2ca897d217518fd154f270 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 6 Jan 2024 05:21:05 +0000 Subject: [PATCH 3/3] [ci-review] Rector Rectify --- .../Rector/Foreach_/SimplifyForeachToCoalescingRector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php b/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php index f8f0d973235..511add0cf3a 100644 --- a/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php +++ b/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php @@ -114,7 +114,7 @@ public function refactor(Node $node): ?Node $return = $this->processForeachNodeWithReturnInside($foreach, $foreachReturnOrAssign, $nextStmt); - if ($return === null) { + if (!$return instanceof Return_) { continue; }