Skip to content

Commit 0a65b0c

Browse files
committed
Pick up variable references in Name statement. Closes #2646
1 parent 63f4a07 commit 0a65b0c

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

Rubberduck.Parsing/Symbols/IdentifierReferenceListener.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,11 @@ public override void EnterRedimStmt(VBAParser.RedimStmtContext context)
169169
_resolver.Resolve(context);
170170
}
171171

172+
public override void EnterNameStmt(VBAParser.NameStmtContext context)
173+
{
174+
_resolver.Resolve(context);
175+
}
176+
172177
public override void EnterEraseStmt(VBAParser.EraseStmtContext context)
173178
{
174179
_resolver.Resolve(context);

Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,14 @@ public void Resolve(VBAParser.EraseStmtContext context)
380380
}
381381
}
382382

383+
public void Resolve(VBAParser.NameStmtContext context)
384+
{
385+
foreach (var expr in context.expression())
386+
{
387+
ResolveDefault(expr);
388+
}
389+
}
390+
383391
private void ResolveFileNumber(VBAParser.FileNumberContext fileNumber)
384392
{
385393
if (fileNumber.markedFileNumber() != null)

RubberduckTests/Inspections/VariableNotUsedInspectionTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,33 @@ Dim var1 As String
162162
Assert.IsFalse(inspectionResults.Any());
163163
}
164164

165+
[TestMethod]
166+
[TestCategory("Inspections")]
167+
public void VariableNotUsed_DoesNotReturnsResult_UsedInNameStatement()
168+
{
169+
const string inputCode =
170+
@"Sub Foo()
171+
Dim var1 As String
172+
Name ""foo"" As var1
173+
End Sub";
174+
175+
//Arrange
176+
var builder = new MockVbeBuilder();
177+
IVBComponent component;
178+
var vbe = builder.BuildFromSingleStandardModule(inputCode, out component);
179+
var mockHost = new Mock<IHostApplication>();
180+
mockHost.SetupAllProperties();
181+
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(new Mock<ISinks>().Object));
182+
183+
parser.Parse(new CancellationTokenSource());
184+
if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
185+
186+
var inspection = new VariableNotUsedInspection(parser.State);
187+
var inspectionResults = inspection.GetInspectionResults();
188+
189+
Assert.IsFalse(inspectionResults.Any());
190+
}
191+
165192
[TestMethod]
166193
[TestCategory("Inspections")]
167194
public void UnassignedVariable_QuickFixWorks()

0 commit comments

Comments
 (0)