rector/rules/Php74/TypeAnalyzer/PropertyUnionTypeResolver.php
Tomas Votruba d4c101be43 Updated Rector to commit 24b8ea974a
24b8ea974a [PHP 8.1] Add IntersectionTypesRector (#1227)
2021-11-14 12:07:09 +00:00

34 lines
961 B
PHP

<?php
declare (strict_types=1);
namespace Rector\Php74\TypeAnalyzer;
use PhpParser\Node\ComplexType;
use PhpParser\Node\Name;
use PhpParser\Node\NullableType;
use PHPStan\Type\NullType;
use PHPStan\Type\Type;
use PHPStan\Type\UnionType;
final class PropertyUnionTypeResolver
{
/**
* @param \PhpParser\Node\ComplexType|\PhpParser\Node\Name $phpUnionType
*/
public function resolve($phpUnionType, \PHPStan\Type\Type $possibleUnionType) : \PHPStan\Type\Type
{
if (!$phpUnionType instanceof \PhpParser\Node\NullableType) {
return $possibleUnionType;
}
if (!$possibleUnionType instanceof \PHPStan\Type\UnionType) {
return $possibleUnionType;
}
$types = $possibleUnionType->getTypes();
foreach ($types as $type) {
if (!$type instanceof \PHPStan\Type\NullType) {
return $type;
}
}
return $possibleUnionType;
}
}