From 605867cd9195f7bdb7cfa9aef158859e534b19ad Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 11 Jun 2025 10:07:23 +0200 Subject: [PATCH] skip is_array() on anything --- .../skip_is_array_on_non_collection.php.inc | 29 +++++++++++++++++++ .../If_/RemoveIsArrayOnCollectionRector.php | 5 +++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 rules-tests/TypedCollections/Rector/If_/RemoveIsArrayOnCollectionRector/Fixture/skip_is_array_on_non_collection.php.inc 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; }