Skip to content

Commit 7d843f0

Browse files
fix docblock parsing which considers custom tags as classes (#517)
1 parent c09490a commit 7d843f0

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

src/Analyzer/DocblockTypesResolver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ private function resolvePropertyTypes(Node $node): void
9292
$doctrineAnnotations = $docblock->getDoctrineLikeAnnotationTypes();
9393
$doctrineAnnotations = array_shift($doctrineAnnotations);
9494

95-
if (null === $doctrineAnnotations) {
95+
if (!$this->isTypeClass($doctrineAnnotations)) {
9696
return;
9797
}
9898

tests/Unit/Analyzer/DocblockTypesResolverTest.php

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public function test_it_should_collect_dependencies_defined_in_docblock(): void
3131
3232
use Application\MyDto;
3333
use Domain\ValueObject;
34+
use Symfony\Component\Validator\Constraints AS Assert;
3435
3536
use Application\Model\{User, Product};
3637
@@ -39,9 +40,20 @@ class MyClass
3940
/** @var array<int, int|string> */
4041
public array $myArray;
4142
42-
/** @var array<int, User> */
43+
/**
44+
* @var array<int, User>
45+
*/
4346
public array $users;
4447
48+
/**
49+
* @Assert\NotBlank
50+
*/
51+
public array $myAssertedArray;
52+
53+
/**
54+
* @phpstan-ignore property.readOnlyByPhpDocDefaultValue
55+
*/
56+
private static ?\UuidFactoryInterface $factory = null;
4557
4658
/**
4759
* @param MyDto[] $dtoList
@@ -76,13 +88,15 @@ public function myMethod2(array $aParam, array $users): array
7688
$cd = $parser->getClassDescriptions()[0];
7789
$dep = $cd->getDependencies();
7890

79-
self::assertCount(7, $cd->getDependencies());
91+
self::assertCount(9, $cd->getDependencies());
8092
self::assertEquals('Application\Model\User', $dep[0]->getFQCN()->toString());
81-
self::assertEquals('Application\MyDto', $dep[1]->getFQCN()->toString());
82-
self::assertEquals('Domain\ValueObject', $dep[2]->getFQCN()->toString());
83-
self::assertEquals('Application\Model\User', $dep[3]->getFQCN()->toString());
84-
self::assertEquals('Application\Model\Product', $dep[4]->getFQCN()->toString());
85-
self::assertEquals('Domain\Foo\MyOtherClass', $dep[5]->getFQCN()->toString());
86-
self::assertEquals('Application\Model\User', $dep[6]->getFQCN()->toString());
93+
self::assertEquals('Symfony\Component\Validator\Constraints\NotBlank', $dep[1]->getFQCN()->toString());
94+
self::assertEquals('UuidFactoryInterface', $dep[2]->getFQCN()->toString());
95+
self::assertEquals('Application\MyDto', $dep[3]->getFQCN()->toString());
96+
self::assertEquals('Domain\ValueObject', $dep[4]->getFQCN()->toString());
97+
self::assertEquals('Application\Model\User', $dep[5]->getFQCN()->toString());
98+
self::assertEquals('Application\Model\Product', $dep[6]->getFQCN()->toString());
99+
self::assertEquals('Domain\Foo\MyOtherClass', $dep[7]->getFQCN()->toString());
100+
self::assertEquals('Application\Model\User', $dep[8]->getFQCN()->toString());
87101
}
88102
}

0 commit comments

Comments
 (0)