diff --git a/packages/CodeQuality/src/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php b/packages/CodeQuality/src/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php index 2e4501728eab..d2e6f9323fb4 100644 --- a/packages/CodeQuality/src/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php +++ b/packages/CodeQuality/src/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php @@ -113,6 +113,10 @@ private function matchAssignItemsOnlyForeachArrayVariable(Foreach_ $foreach): ?E return null; } + if ($onlyStatement->var->dim !== null) { + return null; + } + if (! $this->areNodesEqual($foreach->valueVar, $onlyStatement->expr)) { return null; } diff --git a/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_1.php.inc b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_1.php.inc new file mode 100644 index 000000000000..069757509c93 --- /dev/null +++ b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_1.php.inc @@ -0,0 +1,16 @@ + $value) { + foreach (self::assertIterable($fn($value, $key)) as $mapKey => $mapValue) { + $result[$mapKey] = $mapValue; + } + } + + return $result; + } + + public static function assertIterable($traversable) + { + if (is_iterable($traversable)) { + return $traversable; + } + + throw new \UnexpectedValueException('Traversable expected'); + } +}