diff --git a/src/Analyzer/DocblockTypesResolver.php b/src/Analyzer/DocblockTypesResolver.php index 498ca707..160a2cc0 100644 --- a/src/Analyzer/DocblockTypesResolver.php +++ b/src/Analyzer/DocblockTypesResolver.php @@ -92,7 +92,7 @@ private function resolvePropertyTypes(Node $node): void $doctrineAnnotations = $docblock->getDoctrineLikeAnnotationTypes(); $doctrineAnnotations = array_shift($doctrineAnnotations); - if (null === $doctrineAnnotations) { + if (!$this->isTypeClass($doctrineAnnotations)) { return; } diff --git a/tests/Unit/Analyzer/DocblockTypesResolverTest.php b/tests/Unit/Analyzer/DocblockTypesResolverTest.php index c80067f4..c6593ef2 100644 --- a/tests/Unit/Analyzer/DocblockTypesResolverTest.php +++ b/tests/Unit/Analyzer/DocblockTypesResolverTest.php @@ -31,6 +31,7 @@ public function test_it_should_collect_dependencies_defined_in_docblock(): void use Application\MyDto; use Domain\ValueObject; + use Symfony\Component\Validator\Constraints AS Assert; use Application\Model\{User, Product}; @@ -39,9 +40,20 @@ class MyClass /** @var array */ public array $myArray; - /** @var array */ + /** + * @var array + */ public array $users; + /** + * @Assert\NotBlank + */ + public array $myAssertedArray; + + /** + * @phpstan-ignore property.readOnlyByPhpDocDefaultValue + */ + private static ?\UuidFactoryInterface $factory = null; /** * @param MyDto[] $dtoList @@ -76,13 +88,15 @@ public function myMethod2(array $aParam, array $users): array $cd = $parser->getClassDescriptions()[0]; $dep = $cd->getDependencies(); - self::assertCount(7, $cd->getDependencies()); + self::assertCount(9, $cd->getDependencies()); self::assertEquals('Application\Model\User', $dep[0]->getFQCN()->toString()); - self::assertEquals('Application\MyDto', $dep[1]->getFQCN()->toString()); - self::assertEquals('Domain\ValueObject', $dep[2]->getFQCN()->toString()); - self::assertEquals('Application\Model\User', $dep[3]->getFQCN()->toString()); - self::assertEquals('Application\Model\Product', $dep[4]->getFQCN()->toString()); - self::assertEquals('Domain\Foo\MyOtherClass', $dep[5]->getFQCN()->toString()); - self::assertEquals('Application\Model\User', $dep[6]->getFQCN()->toString()); + self::assertEquals('Symfony\Component\Validator\Constraints\NotBlank', $dep[1]->getFQCN()->toString()); + self::assertEquals('UuidFactoryInterface', $dep[2]->getFQCN()->toString()); + self::assertEquals('Application\MyDto', $dep[3]->getFQCN()->toString()); + self::assertEquals('Domain\ValueObject', $dep[4]->getFQCN()->toString()); + self::assertEquals('Application\Model\User', $dep[5]->getFQCN()->toString()); + self::assertEquals('Application\Model\Product', $dep[6]->getFQCN()->toString()); + self::assertEquals('Domain\Foo\MyOtherClass', $dep[7]->getFQCN()->toString()); + self::assertEquals('Application\Model\User', $dep[8]->getFQCN()->toString()); } }