From 75714bb3d6347b617cf33a19ad4d6ed5b57f3721 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 12 Nov 2020 00:08:28 +0700 Subject: [PATCH] [CodeQuality] Fixes #4578 Skip ForToForeachRector on complex init (#4579) --- .../src/Rector/For_/ForToForeachRector.php | 5 ++++ .../Fixture/skip_complex_init.php.inc | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 rules/code-quality/tests/Rector/For_/ForToForeachRector/Fixture/skip_complex_init.php.inc diff --git a/rules/code-quality/src/Rector/For_/ForToForeachRector.php b/rules/code-quality/src/Rector/For_/ForToForeachRector.php index 082c5eec63b..fdd3c5834df 100644 --- a/rules/code-quality/src/Rector/For_/ForToForeachRector.php +++ b/rules/code-quality/src/Rector/For_/ForToForeachRector.php @@ -138,6 +138,11 @@ CODE_SAMPLE return null; } + $init = $node->init; + if (count($init) > 2) { + return null; + } + $iteratedVariableSingle = $this->inflector->singularize($iteratedVariable); $foreach = $this->createForeach($node, $iteratedVariableSingle); diff --git a/rules/code-quality/tests/Rector/For_/ForToForeachRector/Fixture/skip_complex_init.php.inc b/rules/code-quality/tests/Rector/For_/ForToForeachRector/Fixture/skip_complex_init.php.inc new file mode 100644 index 00000000000..f75cc983a01 --- /dev/null +++ b/rules/code-quality/tests/Rector/For_/ForToForeachRector/Fixture/skip_complex_init.php.inc @@ -0,0 +1,23 @@ +getResult(), $c = count($query); $i < $c; $i ++) + { + echo $query[$i]; + } + } +} + +?>