@@ -17,13 +17,20 @@ class WalkTypeNameDef {
1717 parent = questTok ;
1818 }
1919 var name : TokenTree ;
20+ var bAdd : Bool = true ;
2021 switch (stream .token ()) {
2122 case Kwd (KwdMacro ), Kwd (KwdExtern ), Kwd (KwdNew ):
2223 name = stream .consumeToken ();
2324 case Const (_ ):
2425 name = stream .consumeConst ();
2526 case Dollar (_ ):
2627 name = stream .consumeToken ();
28+ case POpen :
29+ name = WalkPOpen .walkPOpen (stream , parent );
30+ if (stream .is (Question )) {
31+ WalkQuestion .walkQuestion (stream , name );
32+ }
33+ bAdd = false ;
2734 case Sharp (_ ):
2835 WalkSharp .walkSharp (stream , parent , WalkStatement .walkStatement );
2936 if (! stream .hasMore ()) return parent .getFirstChild ();
@@ -36,15 +43,21 @@ class WalkTypeNameDef {
3643 default :
3744 name = stream .consumeToken ();
3845 }
39- parent .addChild (name );
46+ if (bAdd ) parent .addChild (name );
47+ walkTypeNameDefContinue (stream , name );
48+ return name ;
49+ }
50+
51+ static function walkTypeNameDefContinue (stream : TokenStream , parent : TokenTree ) {
52+
4053 if (stream .is (Dot )) {
4154 var dot : TokenTree = stream .consumeTokenDef (Dot );
42- name .addChild (dot );
55+ parent .addChild (dot );
4356 WalkTypeNameDef .walkTypeNameDef (stream , dot );
44- return name ;
57+ return ;
4558 }
46- if (stream .is (Binop (OpLt ))) WalkLtGt .walkLtGt (stream , name );
47- WalkComment . walkComment ( stream , name );
48- return name ;
59+ if (stream .is (Binop (OpLt ))) WalkLtGt .walkLtGt (stream , parent );
60+ if ( stream . is ( BkOpen )) WalkArrayAccess . walkArrayAccess ( stream , parent );
61+ WalkComment . walkComment ( stream , parent ) ;
4962 }
5063}
0 commit comments