From 28fb2aa3c35b5068d0d7133f5389c02ac8a762b3 Mon Sep 17 00:00:00 2001 From: Dorian Villet Date: Mon, 6 Jan 2020 19:20:46 +0100 Subject: [PATCH 1/3] Add broken tests for ForeachItemsAssignToEmptyArrayToAssignRector. --- .../Fixture/skip_false_positives.php.inc | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positives.php.inc diff --git a/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positives.php.inc b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positives.php.inc new file mode 100644 index 00000000000..fdcf7179629 --- /dev/null +++ b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positives.php.inc @@ -0,0 +1,37 @@ + $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'); + } +} From 0a648741945696bd8d48ae452e7fc8aa4abb757f Mon Sep 17 00:00:00 2001 From: Dorian Villet Date: Sat, 11 Jan 2020 01:56:26 +0100 Subject: [PATCH 2/3] Fix it. --- ...eachItemsAssignToEmptyArrayToAssignRector.php | 4 ++++ .../Fixture/skip_false_positive_1.php.inc | 16 ++++++++++++++++ ...ves.php.inc => skip_false_positive_2.php.inc} | 12 +----------- 3 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_1.php.inc rename packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/{skip_false_positives.php.inc => skip_false_positive_2.php.inc} (73%) diff --git a/packages/CodeQuality/src/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php b/packages/CodeQuality/src/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php index 2e4501728ea..d2e6f9323fb 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_false_positive_1.php.inc b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_1.php.inc new file mode 100644 index 00000000000..cd54314ec0c --- /dev/null +++ b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_1.php.inc @@ -0,0 +1,16 @@ + Date: Sat, 11 Jan 2020 12:29:52 +0100 Subject: [PATCH 3/3] Rename fixtures files. --- ...alse_positive_1.php.inc => skip_non_empty_dim_key_1.php.inc} | 2 +- ...alse_positive_2.php.inc => skip_non_empty_dim_key_2.php.inc} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/{skip_false_positive_1.php.inc => skip_non_empty_dim_key_1.php.inc} (92%) rename packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/{skip_false_positive_2.php.inc => skip_non_empty_dim_key_2.php.inc} (96%) diff --git a/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_1.php.inc b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_1.php.inc similarity index 92% rename from packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_1.php.inc rename to packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_1.php.inc index cd54314ec0c..069757509c9 100644 --- a/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_1.php.inc +++ b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_1.php.inc @@ -2,7 +2,7 @@ namespace Rector\CodeQuality\Tests\Rector\Foreach_\ForeachItemsAssignToEmptyArrayToAssignRector\Fixture; -class SkipFalsePositive1 +class SkipNonEmptyDimKey1 { public function indexBy(array $array, callable $key): array { diff --git a/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_2.php.inc b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_2.php.inc similarity index 96% rename from packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_2.php.inc rename to packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_2.php.inc index da1abf27d64..e05ae73a260 100644 --- a/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_false_positive_2.php.inc +++ b/packages/CodeQuality/tests/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_non_empty_dim_key_2.php.inc @@ -2,7 +2,7 @@ namespace Rector\CodeQuality\Tests\Rector\Foreach_\ForeachItemsAssignToEmptyArrayToAssignRector\Fixture; -class SkipFalsePositive2 +class SkipNonEmptyDimKey2 { public function mapWithKeys(array $array, callable $fn): array {