File tree Expand file tree Collapse file tree 2 files changed +24
-1
lines changed
src/phpDocumentor/Reflection/NodeVisitor
tests/unit/phpDocumentor/Reflection/NodeVisitor Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -82,11 +82,12 @@ public function enterNode(Node $node)
82
82
case Class_::class:
83
83
case Trait_::class:
84
84
case Interface_::class:
85
+ $ this ->parts ->push ((string )$ node ->name );
86
+
85
87
if (is_null ($ node ->name )) {
86
88
return NodeTraverser::DONT_TRAVERSE_CHILDREN ;
87
89
}
88
90
89
- $ this ->parts ->push ((string )$ node ->name );
90
91
$ node ->fqsen = new Fqsen ($ this ->buildName ());
91
92
break ;
92
93
case Function_::class:
Original file line number Diff line number Diff line change 14
14
namespace phpDocumentor \Reflection \NodeVisitor ;
15
15
16
16
use PhpParser \Node \Const_ ;
17
+ use PhpParser \Node \Expr \New_ ;
17
18
use PhpParser \Node \Name ;
18
19
use PhpParser \Node \Scalar \String_ ;
19
20
use PhpParser \Node \Stmt \Class_ ;
@@ -77,6 +78,27 @@ public function testDoesNotEnterAnonymousClass()
77
78
);
78
79
}
79
80
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
+
80
102
/**
81
103
* @covers ::enterNode
82
104
*/
You can’t perform that action at this time.
0 commit comments