From 8444d5544953931f61d3658337fbf01abf7d3546 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Mon, 27 Oct 2025 22:21:09 +0700 Subject: [PATCH] [Php84] Skip variable extraction with return early on ForeachToArrayAllRector --- .../Fixture/skip_on_variable_extract.php.inc | 16 ++++++++++++++++ .../Rector/Foreach_/ForeachToArrayAllRector.php | 4 ++++ 2 files changed, 20 insertions(+) create mode 100644 rules-tests/Php84/Rector/Foreach_/ForeachToArrayAllRector/Fixture/skip_on_variable_extract.php.inc diff --git a/rules-tests/Php84/Rector/Foreach_/ForeachToArrayAllRector/Fixture/skip_on_variable_extract.php.inc b/rules-tests/Php84/Rector/Foreach_/ForeachToArrayAllRector/Fixture/skip_on_variable_extract.php.inc new file mode 100644 index 00000000000..e6a7778d9d5 --- /dev/null +++ b/rules-tests/Php84/Rector/Foreach_/ForeachToArrayAllRector/Fixture/skip_on_variable_extract.php.inc @@ -0,0 +1,16 @@ + $currentType]) { + if ($currentType !== $type) { + return false; + } + } + + return true; + } +} diff --git a/rules/Php84/Rector/Foreach_/ForeachToArrayAllRector.php b/rules/Php84/Rector/Foreach_/ForeachToArrayAllRector.php index a3a977e2dad..07cdc3ecd5f 100644 --- a/rules/Php84/Rector/Foreach_/ForeachToArrayAllRector.php +++ b/rules/Php84/Rector/Foreach_/ForeachToArrayAllRector.php @@ -276,6 +276,10 @@ private function isValidEarlyReturnForeachStructure(Foreach_ $foreach): bool return false; } + if (! $foreach->valueVar instanceof Variable) { + return false; + } + $type = $this->nodeTypeResolver->getNativeType($foreach->expr); return $type->isArray()