diff --git a/rules-tests/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector/Fixture/skip_is_array_on_non_collection.php.inc b/rules-tests/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector/Fixture/skip_is_array_on_non_collection.php.inc new file mode 100644 index 00000000..64f5ca1d --- /dev/null +++ b/rules-tests/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector/Fixture/skip_is_array_on_non_collection.php.inc @@ -0,0 +1,29 @@ +items) ? $this->items : []; + } + + public function nextMethod() + { + return is_array($this->items) ? $this->items : []; + } + + public function condition() + { + if (! is_array($this->items)) { + return 'yes'; + } + + return 'no'; + } +} diff --git a/rules/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector.php b/rules/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector.php index 06f714de..e6875b56 100644 --- a/rules/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector.php +++ b/rules/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector.php @@ -88,7 +88,10 @@ private function refactorIf(If_ $if): array|int|null if ($if->cond instanceof BooleanNot) { $condition = $if->cond->expr; - if ($condition instanceof FuncCall && $this->isName($condition, 'is_array')) { + if ($condition instanceof FuncCall && $this->isName( + $condition, + 'is_array' + ) && $this->collectionTypeDetector->isCollectionType($condition->getArgs()[0] ->value)) { return $if->stmts; }