![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/rector/rector/src/StaticTypeMapper/PhpDoc/ |
<?php declare (strict_types=1); namespace Rector\StaticTypeMapper\PhpDoc; use PhpParser\Node; use PHPStan\Analyser\NameScope; use PHPStan\PhpDoc\TypeNodeResolver; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\Type; use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; use RectorPrefix202410\Webmozart\Assert\Assert; /** * @see \Rector\Tests\StaticTypeMapper\PhpDoc\PhpDocTypeMapperTest */ final class PhpDocTypeMapper { /** * @var PhpDocTypeMapperInterface[] * @readonly */ private $phpDocTypeMappers; /** * @readonly * @var \PHPStan\PhpDoc\TypeNodeResolver */ private $typeNodeResolver; /** * @param PhpDocTypeMapperInterface[] $phpDocTypeMappers */ public function __construct(array $phpDocTypeMappers, TypeNodeResolver $typeNodeResolver) { $this->phpDocTypeMappers = $phpDocTypeMappers; $this->typeNodeResolver = $typeNodeResolver; Assert::notEmpty($phpDocTypeMappers); } public function mapToPHPStanType(TypeNode $typeNode, Node $node, NameScope $nameScope) : Type { foreach ($this->phpDocTypeMappers as $phpDocTypeMapper) { if (!\is_a($typeNode, $phpDocTypeMapper->getNodeType())) { continue; } return $phpDocTypeMapper->mapToPHPStanType($typeNode, $node, $nameScope); } // fallback to PHPStan resolver return $this->typeNodeResolver->resolve($typeNode, $nameScope); } }