Skip to content

Commit 1353d33

Browse files
authored
Merge pull request #3429 from rkapka/rkapka-master
Fixes Shadowed Declaration inspection false positives involving document modules.
2 parents 7ddc4ab + 99c1235 commit 1353d33

File tree

2 files changed

+37
-33
lines changed

2 files changed

+37
-33
lines changed

Rubberduck.Inspections/Concrete/ShadowedDeclarationInspection.cs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ public override IEnumerable<IInspectionResult> GetInspectionResults()
6060
issues.Add(new DeclarationInspectionResult(this,
6161
string.Format(InspectionsUI.ShadowedDeclarationInspectionResultFormat,
6262
RubberduckUI.ResourceManager.GetString("DeclarationType_" + userDeclaration.DeclarationType, CultureInfo.CurrentUICulture),
63-
userDeclaration.IdentifierName,
63+
userDeclaration.QualifiedName,
6464
RubberduckUI.ResourceManager.GetString("DeclarationType_" + shadowedDeclaration.DeclarationType, CultureInfo.CurrentUICulture),
65-
shadowedDeclaration.IdentifierName),
65+
shadowedDeclaration.QualifiedName),
6666
userDeclaration));
6767
}
6868
}
@@ -125,6 +125,11 @@ private static bool DeclarationInReferencedProjectCanBeShadowed(Declaration orig
125125
return false;
126126
}
127127

128+
if ((originalDeclaration.ParentDeclaration as ClassModuleDeclaration)?.IsGlobalClassModule == false)
129+
{
130+
return false;
131+
}
132+
128133
var originalDeclarationComponentType = originalDeclaration.QualifiedName.QualifiedModuleName.ComponentType;
129134
var userDeclarationComponentType = userDeclaration.QualifiedName.QualifiedModuleName.ComponentType;
130135

@@ -317,8 +322,7 @@ private static bool DeclarationIsInsideOptionPrivateModule(Declaration declarati
317322
return false;
318323
}
319324

320-
var moduleDeclaration = Declaration.GetModuleParent(declaration) as ProceduralModuleDeclaration;
321-
if (moduleDeclaration != null)
325+
if (Declaration.GetModuleParent(declaration) is ProceduralModuleDeclaration moduleDeclaration)
322326
{
323327
return moduleDeclaration.IsPrivateModule;
324328
}
@@ -355,65 +359,65 @@ private static bool DeclarationIsLocal(Declaration declaration)
355359
}.ToHashSet(),
356360
[DeclarationType.ProceduralModule] = new[]
357361
{
358-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
362+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
359363
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
360364
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
361365
}.ToHashSet(),
362366
[DeclarationType.ClassModule] = new[]
363367
{
364-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.ClassModule, DeclarationType.UserForm, DeclarationType.Document,
368+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.ClassModule, DeclarationType.UserForm
365369
}.ToHashSet(),
366370
[DeclarationType.Procedure] = new[]
367371
{
368-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
372+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
369373
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
370374
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
371375
}.ToHashSet(),
372376
[DeclarationType.Function] = new[]
373377
{
374-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
378+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
375379
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
376380
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
377381
}.ToHashSet(),
378382
[DeclarationType.PropertyGet] = new[]
379383
{
380-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
384+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
381385
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
382386
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
383387
}.ToHashSet(),
384388
[DeclarationType.PropertySet] = new[]
385389
{
386-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
390+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
387391
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
388392
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
389393
}.ToHashSet(),
390394
[DeclarationType.PropertyLet] = new[]
391395
{
392-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
396+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
393397
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
394398
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
395399
}.ToHashSet(),
396400
[DeclarationType.Variable] = new[]
397401
{
398-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
402+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
399403
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
400404
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
401405
}.ToHashSet(),
402406
[DeclarationType.Constant] = new[]
403407
{
404-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
408+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
405409
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
406410
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
407411
}.ToHashSet(),
408412
[DeclarationType.Enumeration] = new[]
409413
{
410-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
414+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
411415
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
412416
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
413417
}.ToHashSet(),
414418
[DeclarationType.EnumerationMember] = new[]
415419
{
416-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
420+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
417421
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
418422
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
419423
}.ToHashSet(),
@@ -423,13 +427,13 @@ private static bool DeclarationIsLocal(Declaration declaration)
423427
}.ToHashSet(),
424428
[DeclarationType.LibraryProcedure] = new[]
425429
{
426-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
430+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
427431
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
428432
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
429433
}.ToHashSet(),
430434
[DeclarationType.LibraryFunction] = new[]
431435
{
432-
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Document, DeclarationType.Procedure, DeclarationType.Function,
436+
DeclarationType.Project, DeclarationType.ProceduralModule, DeclarationType.UserForm, DeclarationType.Procedure, DeclarationType.Function,
433437
DeclarationType.PropertyGet, DeclarationType.PropertySet, DeclarationType.PropertyLet, DeclarationType.Parameter, DeclarationType.Variable, DeclarationType.Constant,
434438
DeclarationType.Enumeration, DeclarationType.EnumerationMember, DeclarationType.LibraryProcedure, DeclarationType.LibraryFunction
435439
}.ToHashSet()

0 commit comments

Comments
 (0)