11using System . Collections . Generic ;
22using System . Linq ;
33using System . Windows . Forms ;
4+ using Antlr4 . Runtime ;
5+ using Rubberduck . Extensions ;
46using Rubberduck . Inspections ;
57using Rubberduck . VBA . Grammar ;
68using Rubberduck . VBA . Nodes ;
@@ -9,11 +11,13 @@ namespace Rubberduck.VBA.ParseTreeListeners
911{
1012 public class TreeViewListener : IVBBaseListener , IExtensionListener < TreeNode >
1113 {
14+ private readonly QualifiedModuleName _name ;
1215 private readonly TreeNode _tree ;
1316 private bool _isInDeclarationsSection = true ;
1417
1518 public TreeViewListener ( QualifiedModuleName name )
1619 {
20+ _name = name ;
1721 _tree = new TreeNode ( name . ModuleName ) ;
1822 }
1923
@@ -40,6 +44,7 @@ public override void EnterVariableSubStmt(VBParser.VariableSubStmtContext contex
4044 : "PrivateField" ;
4145
4246 node . SelectedImageKey = node . ImageKey ;
47+ node . Tag = context . GetQualifiedSelection ( _name ) ;
4348 _tree . Nodes . Add ( node ) ;
4449 }
4550
@@ -61,6 +66,7 @@ public override void EnterConstSubStmt(VBParser.ConstSubStmtContext context)
6166 : "PrivateConst" ;
6267
6368 node . SelectedImageKey = node . ImageKey ;
69+ node . Tag = context . GetQualifiedSelection ( _name ) ;
6470 _tree . Nodes . Add ( node ) ;
6571 }
6672
@@ -73,6 +79,7 @@ public override void EnterEnumerationStmt(VBParser.EnumerationStmtContext contex
7379 var memberNode = node . Nodes . Add ( member . GetText ( ) ) ;
7480 memberNode . ImageKey = "EnumItem" ;
7581 memberNode . SelectedImageKey = memberNode . ImageKey ;
82+ memberNode . Tag = member . GetQualifiedSelection ( _name ) ;
7683 }
7784
7885 var accessibility = context . visibility ( ) == null
@@ -84,7 +91,7 @@ public override void EnterEnumerationStmt(VBParser.EnumerationStmtContext contex
8491 : "PrivateEnum" ;
8592
8693 node . SelectedImageKey = node . ImageKey ;
87-
94+ node . Tag = context . GetQualifiedSelection ( _name ) ;
8895 _tree . Nodes . Add ( node ) ;
8996 }
9097
@@ -97,6 +104,7 @@ public override void EnterTypeStmt(VBParser.TypeStmtContext context)
97104 var memberNode = node . Nodes . Add ( member . GetText ( ) ) ;
98105 memberNode . ImageKey = "PublicField" ;
99106 memberNode . SelectedImageKey = memberNode . ImageKey ;
107+ memberNode . Tag = member . GetQualifiedSelection ( _name ) ;
100108 }
101109
102110 var accessibility = context . visibility ( ) == null
@@ -107,6 +115,7 @@ public override void EnterTypeStmt(VBParser.TypeStmtContext context)
107115 ? "PublicType"
108116 : "PrivateType" ;
109117
118+ node . Tag = context . GetQualifiedSelection ( _name ) ;
110119 node . SelectedImageKey = node . ImageKey ;
111120 }
112121
@@ -121,6 +130,7 @@ public override void EnterSubStmt(VBParser.SubStmtContext context)
121130 : accessibility == VBAccessibility . Friend
122131 ? "FriendMethod"
123132 : "PublicMethod" ;
133+
124134 _tree . Nodes . Add ( CreateProcedureNode ( context , imageKey ) ) ;
125135 }
126136
@@ -182,10 +192,10 @@ public override void EnterPropertySetStmt(VBParser.PropertySetStmtContext contex
182192
183193 private TreeNode CreateProcedureNode ( dynamic context , string imageKey )
184194 {
185- var procedureName = context . ambiguousIdentifier ( ) . GetText ( ) ;
195+ var procedureName = context . AmbiguousIdentifier ( ) . GetText ( ) ;
186196 var node = new TreeNode ( procedureName ) ;
187197
188- var args = context . argList ( ) . arg ( ) as IReadOnlyList < VBParser . ArgContext > ;
198+ var args = context . ArgList ( ) . Arg ( ) as IReadOnlyList < VBParser . ArgContext > ;
189199 if ( args == null )
190200 {
191201 return node ;
@@ -196,12 +206,13 @@ private TreeNode CreateProcedureNode(dynamic context, string imageKey)
196206 var argNode = new TreeNode ( arg . GetText ( ) ) ;
197207 argNode . ImageKey = "Parameter" ;
198208 argNode . SelectedImageKey = argNode . ImageKey ;
199-
209+ argNode . Tag = arg . GetQualifiedSelection ( _name ) ;
200210 node . Nodes . Add ( argNode ) ;
201211 }
202212
203213 node . ImageKey = imageKey ;
204214 node . SelectedImageKey = node . ImageKey ;
215+ node . Tag = ( ( ParserRuleContext ) context ) . GetQualifiedSelection ( _name ) ;
205216 return node ;
206217 }
207218 }
0 commit comments