diff --git a/src/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php b/src/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php index a49e14f8841..e004b3c55db 100644 --- a/src/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php +++ b/src/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php @@ -35,6 +35,8 @@ use Rector\Exception\ShouldNotHappenException; use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\Validation\RectorAssert; +use Webmozart\Assert\InvalidArgumentException; /** * @see \Rector\Tests\BetterPhpDocParser\PhpDocInfo\PhpDocInfo\PhpDocInfoTest @@ -461,7 +463,19 @@ public function getGenericTagClassNames(): array // add default original value $resolvedClasses[] = $genericTagValueNode->value; + if (! str_contains($genericTagValueNode->value, '::')) { + // keep the import for the leading class reference in "@see Foo some description" + $leadingReference = strtok($genericTagValueNode->value, " \t\n\r"); + if ($leadingReference !== false && $leadingReference !== $genericTagValueNode->value) { + try { + RectorAssert::className($leadingReference); + $resolvedClasses[] = $leadingReference; + } catch (InvalidArgumentException) { + continue; + } + } + continue; } diff --git a/tests/Issues/NamespacedUse/Fixture/see_with_non_class_description.php.inc b/tests/Issues/NamespacedUse/Fixture/see_with_non_class_description.php.inc new file mode 100644 index 00000000000..2f016659a44 --- /dev/null +++ b/tests/Issues/NamespacedUse/Fixture/see_with_non_class_description.php.inc @@ -0,0 +1,23 @@ +