Skip to content

Commit d787ea6

Browse files
wip
1 parent 0487b72 commit d787ea6

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

src/Analyzer/NameResolver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public function enterNode(Node $node)
148148
break;
149149
}
150150

151-
if (null === $node->type) {
151+
if (!($node->type instanceof FullyQualified)) {
152152
foreach ($phpDocNode->getTags() as $tagValue) {
153153
if ('@' === $tagValue->name[0] && false === strpos($tagValue->name, '@var')) {
154154
$customTag = str_replace('@', '', $tagValue->name);

tests/Unit/Analyzer/FileVisitorTest.php

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,7 @@ class ApplicationLevelDto
581581
$this->assertCount(0, $violations);
582582
}
583583

584-
public function test_it_parse_dependencies_in_docblocks(): void
584+
public function test_it_parse_dependencies_in_docblocks_customs(): void
585585
{
586586
$code = <<< 'EOF'
587587
<?php
@@ -649,17 +649,13 @@ public function test_should_implement_exact_classname(): void
649649
{
650650
$code = <<< 'EOF'
651651
<?php
652-
653652
namespace Foo;
654-
655653
interface Order
656654
{
657655
}
658-
659656
interface OrderTwo
660657
{
661658
}
662-
663659
class test implements Order
664660
{
665661
}
@@ -678,4 +674,34 @@ class test implements Order
678674

679675
$this->assertCount(0, $violations, $violations->toString());
680676
}
677+
678+
public function test_it_parse_dependencies_in_docblocks_with_alias(): void
679+
{
680+
$code = <<< 'EOF'
681+
<?php
682+
namespace MyProject\AppBundle\Application;
683+
use Symfony\Component\Validator\Constraints as Assert;
684+
use Symfony\Test;
685+
class ApplicationLevelDto
686+
{
687+
/**
688+
* @Assert\NotBlank
689+
*/
690+
public string|null $foo;
691+
}
692+
EOF;
693+
694+
/** @var FileParser $fp */
695+
$fp = FileParserFactory::createFileParser(TargetPhpVersion::create('8.1'));
696+
$fp->parse($code, 'relativePathName');
697+
698+
$cd = $fp->getClassDescriptions();
699+
700+
$violations = new Violations();
701+
702+
$dependsOnTheseNamespaces = new DependsOnlyOnTheseNamespaces('MyProject\AppBundle\Application');
703+
$dependsOnTheseNamespaces->evaluate($cd[0], $violations, 'we want to add this rule for our software');
704+
705+
$this->assertCount(1, $violations);
706+
}
681707
}

0 commit comments

Comments
 (0)