2
2
using System . Collections . Generic ;
3
3
using System . Globalization ;
4
4
using System . Linq ;
5
- using Antlr4 . Runtime ;
6
- using Antlr4 . Runtime . Tree ;
7
- using Rubberduck . Common ;
8
5
using Rubberduck . Inspections . Abstract ;
9
6
using Rubberduck . Inspections . Results ;
10
- using Rubberduck . Parsing ;
11
- using Rubberduck . Parsing . Grammar ;
12
7
using Rubberduck . Parsing . Inspections . Abstract ;
13
8
using Rubberduck . Parsing . Inspections . Resources ;
14
9
using Rubberduck . Parsing . Symbols ;
@@ -28,27 +23,6 @@ private enum DeclarationSite
28
23
SameComponent = 3
29
24
}
30
25
31
- private class EnumerationRuleIndexListener : VBAParserBaseListener
32
- {
33
- public Dictionary < ParserRuleContext , int > DeclarationIndexes { get ; } = new Dictionary < ParserRuleContext , int > ( ) ;
34
-
35
- public override void EnterEnumerationStmt ( VBAParser . EnumerationStmtContext context )
36
- {
37
- if ( ! DeclarationIndexes . ContainsKey ( context ) )
38
- {
39
- DeclarationIndexes . Add ( context , context . Start . TokenIndex ) ;
40
- }
41
- }
42
-
43
- public override void EnterEnumerationStmt_Constant ( VBAParser . EnumerationStmt_ConstantContext context )
44
- {
45
- if ( ! DeclarationIndexes . ContainsKey ( context ) )
46
- {
47
- DeclarationIndexes . Add ( context , context . Start . TokenIndex ) ;
48
- }
49
- }
50
- }
51
-
52
26
public ShadowedDeclarationInspection ( RubberduckParserState state ) : base ( state , CodeInspectionSeverity . DoNotShow )
53
27
{
54
28
}
@@ -124,7 +98,7 @@ private static bool DeclarationIsPartOfBuiltInEventHandler(Declaration declarati
124
98
return parameterDeclaration != null && builtInEventHandlers . Contains ( parameterDeclaration . ParentDeclaration ) ;
125
99
}
126
100
127
- private bool DeclarationCanBeShadowed ( Declaration originalDeclaration , Declaration userDeclaration , DeclarationSite originalDeclarationSite )
101
+ private static bool DeclarationCanBeShadowed ( Declaration originalDeclaration , Declaration userDeclaration , DeclarationSite originalDeclarationSite )
128
102
{
129
103
if ( originalDeclarationSite == DeclarationSite . NotApplicable )
130
104
{
@@ -144,7 +118,7 @@ private bool DeclarationCanBeShadowed(Declaration originalDeclaration, Declarati
144
118
return DeclarationInTheSameComponentCanBeShadowed ( originalDeclaration , userDeclaration ) ;
145
119
}
146
120
147
- private bool DeclarationInReferencedProjectCanBeShadowed ( Declaration originalDeclaration , Declaration userDeclaration )
121
+ private static bool DeclarationInReferencedProjectCanBeShadowed ( Declaration originalDeclaration , Declaration userDeclaration )
148
122
{
149
123
if ( DeclarationIsInsideOptionPrivateModule ( originalDeclaration ) )
150
124
{
@@ -271,7 +245,7 @@ private static bool DeclarationInAnotherComponentCanBeShadowed(Declaration origi
271
245
return DeclarationAccessibilityCanBeShadowed ( originalDeclaration ) ;
272
246
}
273
247
274
- private bool DeclarationInTheSameComponentCanBeShadowed ( Declaration originalDeclaration , Declaration userDeclaration )
248
+ private static bool DeclarationInTheSameComponentCanBeShadowed ( Declaration originalDeclaration , Declaration userDeclaration )
275
249
{
276
250
// Shadowing the component containing the declaration is not a problem, because it is possible to directly access declarations inside that component
277
251
if ( originalDeclaration . DeclarationType == DeclarationType . ProceduralModule || originalDeclaration . DeclarationType == DeclarationType . ClassModule ||
@@ -308,25 +282,14 @@ private bool DeclarationInTheSameComponentCanBeShadowed(Declaration originalDecl
308
282
&& userDeclaration . DeclarationType == DeclarationType . EnumerationMember )
309
283
|| ( originalDeclaration . DeclarationType == DeclarationType . EnumerationMember
310
284
&& userDeclaration . DeclarationType == DeclarationType . Enumeration ) ) )
311
- {
312
- var listener = new EnumerationRuleIndexListener ( ) ;
313
- if ( ! listener . DeclarationIndexes . ContainsKey ( originalDeclaration . Context ) )
314
- {
315
- ParseTreeWalker . Default . Walk ( listener ,
316
- State . GetParseTree ( originalDeclaration . QualifiedName . QualifiedModuleName ) ) ;
317
- }
318
-
319
- if ( listener . DeclarationIndexes . ContainsKey ( originalDeclaration . Context ) &&
320
- listener . DeclarationIndexes . ContainsKey ( userDeclaration . Context ) )
321
- {
322
- var originalDeclarationIndex = listener . DeclarationIndexes [ originalDeclaration . Context ] ;
323
- var userDeclarationIndex = listener . DeclarationIndexes [ userDeclaration . Context ] ;
285
+ {
286
+ var originalDeclarationIndex = originalDeclaration . Context . start . StartIndex ;
287
+ var userDeclarationIndex = userDeclaration . Context . start . StartIndex ;
324
288
325
289
// First declaration wins
326
290
return originalDeclarationIndex > userDeclarationIndex
327
291
// Enumeration member can have the same name as enclosing enumeration
328
292
&& ! userDeclaration . Equals ( originalDeclaration . ParentDeclaration ) ;
329
- }
330
293
}
331
294
332
295
// Events don't have a body, so their parameters can't be accessed
0 commit comments