Skip to content

Commit 2f0c141

Browse files
committed
fix possible NRE
1 parent a99467e commit 2f0c141

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

Rubberduck.CodeAnalysis/Inspections/Concrete/SuspiciousPredeclaredInstanceAccessInspection.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,12 @@ public SuspiciousPredeclaredInstanceAccessInspection(IDeclarationFinderProvider
5151

5252
protected override bool IsResultReference(IdentifierReference reference, DeclarationFinder finder)
5353
{
54-
if (!(reference.Declaration is ClassModuleDeclaration module) ||
55-
!module.HasPredeclaredId ||
56-
!reference.ParentScoping.ParentDeclaration.Equals(module))
57-
{
58-
return false;
59-
}
60-
61-
return reference.IdentifierName != Tokens.Me;
54+
return
55+
reference.Declaration is ClassModuleDeclaration module &&
56+
module.HasPredeclaredId &&
57+
reference.ParentScoping.ParentDeclaration.Equals(module) &&
58+
reference.Context.TryGetAncestor<VBAParser.LExpressionContext>(out var expression) &&
59+
reference.IdentifierName != Tokens.Me && expression.GetText() == reference.IdentifierName;
6260
}
6361

6462
protected override string ResultDescription(IdentifierReference reference)

RubberduckTests/Inspections/SuspiciousPredeclaredInstanceAccessInspectionTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,22 @@ End Sub
7979
Assert.AreEqual(0, inspectionResults.Count());
8080
}
8181

82+
[Test]
83+
[Category("Inspections")]
84+
public void NoMemberAccess_NoResult()
85+
{
86+
var className = "UserForm1";
87+
var code = $@"
88+
Attribute VB_PredeclaredId = True
89+
Public AnyField As Long
90+
Private Sub Test()
91+
If Me Is UserForm1 Then Exit Sub
92+
End Sub
93+
";
94+
var inspectionResults = InspectionResultsForModules((className, code, ComponentType.UserForm));
95+
Assert.AreEqual(0, inspectionResults.Count());
96+
}
97+
8298
protected override IInspection InspectionUnderTest(RubberduckParserState state)
8399
{
84100
return new SuspiciousPredeclaredInstanceAccessInspection(state);

0 commit comments

Comments
 (0)