rector/rules/CodingStyle/TypeAnalyzer/IterableTypeAnalyzer.php
Tomas Votruba d79b1c7718 Updated Rector to commit 31c1deb3f939c43ca4224cd7fed0e6b0140d4736
31c1deb3f9 Defer type-resolving in IterableTypeAnalyzer (#3760)
2023-05-07 19:01:30 +00:00

30 lines
688 B
PHP

<?php
declare (strict_types=1);
namespace Rector\CodingStyle\TypeAnalyzer;
use PHPStan\Type\IterableType;
use PHPStan\Type\Type;
use PHPStan\Type\UnionType;
final class IterableTypeAnalyzer
{
public function detect(Type $type) : bool
{
if ($type instanceof IterableType) {
return \true;
}
if ($type->isArray()->yes()) {
return \true;
}
if ($type instanceof UnionType) {
foreach ($type->getTypes() as $unionedType) {
if (!$this->detect($unionedType)) {
return \false;
}
}
return \true;
}
return \false;
}
}