diff --git a/src/Metadata/Driver/DocBlockDriver/DocBlockTypeResolver.php b/src/Metadata/Driver/DocBlockDriver/DocBlockTypeResolver.php index d5fad5b64..056269828 100644 --- a/src/Metadata/Driver/DocBlockDriver/DocBlockTypeResolver.php +++ b/src/Metadata/Driver/DocBlockDriver/DocBlockTypeResolver.php @@ -7,6 +7,7 @@ use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode; use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode; +use PHPStan\PhpDocParser\Ast\PhpDoc\TypeAliasTagValueNode; use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode; use PHPStan\PhpDocParser\Ast\Type\ArrayTypeNode; use PHPStan\PhpDocParser\Ast\Type\GenericTypeNode; @@ -408,15 +409,15 @@ private function getPhpstanType(\ReflectionClass $declaringClass, string $typeHi $self = $this; foreach ($phpDocNode->children as $node) { - if ($node instanceof PhpDocTagNode && '@phpstan-type' === $node->name) { - $phpstanType = (string) $node->value; + if ($node instanceof PhpDocTagNode && $node->value instanceof TypeAliasTagValueNode) { + $phpstanType = $node->value->__toString(); preg_match_all(self::PHPSTAN_ARRAY_SHAPE, $phpstanType, $foundPhpstanArray); - if (isset($foundPhpstanArray[1][0]) && $foundPhpstanArray[1][0] === $typeHint) { + if (isset($foundPhpstanArray[0][0]) && $node->value->alias === $typeHint) { return 'array'; } preg_match_all(self::PHPSTAN_ARRAY_TYPE, $phpstanType, $foundPhpstanArray); - if (isset($foundPhpstanArray[2][0]) && $foundPhpstanArray[1][0] === $typeHint) { + if (isset($foundPhpstanArray[0][0]) && $node->value->alias === $typeHint) { $types = explode(',', $foundPhpstanArray[2][0]); return sprintf('array<%s>', implode(