Skip to content

Commit 6e1df54

Browse files
authored
Merge pull request #104 from marcosh/anonymous-alter-parts
Anonymous alter parts
2 parents 346f28f + ecb59a8 commit 6e1df54

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/phpDocumentor/Reflection/NodeVisitor/ElementNameResolver.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,12 @@ public function enterNode(Node $node)
8282
case Class_::class:
8383
case Trait_::class:
8484
case Interface_::class:
85+
$this->parts->push((string)$node->name);
86+
8587
if (is_null($node->name)) {
8688
return NodeTraverser::DONT_TRAVERSE_CHILDREN;
8789
}
8890

89-
$this->parts->push((string)$node->name);
9091
$node->fqsen = new Fqsen($this->buildName());
9192
break;
9293
case Function_::class:

tests/unit/phpDocumentor/Reflection/NodeVisitor/ElementNameResolverTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
namespace phpDocumentor\Reflection\NodeVisitor;
1515

1616
use PhpParser\Node\Const_;
17+
use PhpParser\Node\Expr\New_;
1718
use PhpParser\Node\Name;
1819
use PhpParser\Node\Scalar\String_;
1920
use PhpParser\Node\Stmt\Class_;
@@ -77,6 +78,27 @@ public function testDoesNotEnterAnonymousClass()
7778
);
7879
}
7980

81+
/**
82+
* @link https://github.com/phpDocumentor/Reflection/issues/103
83+
* @covers ::enterNode
84+
* @covers ::leaveNode
85+
*/
86+
public function testAnonymousClassDoesNotPopParts()
87+
{
88+
$anonymousClass = new Class_(null);
89+
90+
$new = new New_($anonymousClass);
91+
92+
$namespace = new Namespace_(new Name('ANamespace'), $new);
93+
94+
$this->fixture->enterNode($namespace);
95+
$this->fixture->enterNode($new);
96+
$this->fixture->enterNode($anonymousClass);
97+
$this->fixture->leaveNode($anonymousClass);
98+
$this->fixture->leaveNode($new);
99+
$this->fixture->leaveNode($namespace);
100+
}
101+
80102
/**
81103
* @covers ::enterNode
82104
*/

0 commit comments

Comments
 (0)