mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-26 12:52:36 +00:00
49 lines
1.0 KiB
PHP
49 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Rector\NodeTypeResolver\NodeTypeResolver;
|
||
|
|
||
|
use PhpParser\Node;
|
||
|
use PhpParser\Node\Stmt\Return_;
|
||
|
use PHPStan\Type\Type;
|
||
|
use PHPStan\Type\VoidType;
|
||
|
use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface;
|
||
|
use Rector\NodeTypeResolver\NodeTypeResolver;
|
||
|
|
||
|
final class ReturnTypeResolver implements NodeTypeResolverInterface
|
||
|
{
|
||
|
/**
|
||
|
* @var NodeTypeResolver
|
||
|
*/
|
||
|
private $nodeTypeResolver;
|
||
|
|
||
|
/**
|
||
|
* @required
|
||
|
*/
|
||
|
public function autowireReturnTypeResolver(NodeTypeResolver $nodeTypeResolver): void
|
||
|
{
|
||
|
$this->nodeTypeResolver = $nodeTypeResolver;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array<class-string<Node>>
|
||
|
*/
|
||
|
public function getNodeClasses(): array
|
||
|
{
|
||
|
return [Return_::class];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param Return_ $node
|
||
|
*/
|
||
|
public function resolve(Node $node): Type
|
||
|
{
|
||
|
if ($node->expr === null) {
|
||
|
return new VoidType();
|
||
|
}
|
||
|
|
||
|
return $this->nodeTypeResolver->resolve($node->expr);
|
||
|
}
|
||
|
}
|