rector/packages/NodeTypeResolver/NodeTypeCorrector/AccessoryNonEmptyStringTypeCorrector.php
Tomas Votruba ef3f017e7b Updated Rector to commit fff22320cedf04f5aa2449592f1924bc5ebc5551
fff22320ce Simplify AccessoryNonEmptyStringTypeCorrector (#3636)
2023-04-20 13:44:42 +00:00

39 lines
1.2 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\NodeTypeResolver\NodeTypeCorrector;
use PHPStan\Type\Accessory\AccessoryNonEmptyStringType;
use PHPStan\Type\Accessory\AccessoryNonFalsyStringType;
use PHPStan\Type\IntersectionType;
use PHPStan\Type\Type;
final class AccessoryNonEmptyStringTypeCorrector
{
/**
* @return \PHPStan\Type\Type|\PHPStan\Type\IntersectionType
*/
public function correct(Type $mainType)
{
if (!$mainType instanceof IntersectionType) {
return $mainType;
}
if (!$mainType->isNonEmptyString()->yes()) {
return $mainType;
}
$clearIntersectionedTypes = [];
foreach ($mainType->getTypes() as $intersectionedType) {
if ($intersectionedType instanceof AccessoryNonEmptyStringType) {
continue;
}
if ($intersectionedType instanceof AccessoryNonFalsyStringType) {
continue;
}
$clearIntersectionedTypes[] = $intersectionedType;
}
if (\count($clearIntersectionedTypes) === 1) {
return $clearIntersectionedTypes[0];
}
return new IntersectionType($clearIntersectionedTypes);
}
}