Skip to content

Commit 8bea806

Browse files
committed
Add failing test for #4577
1 parent 0bda237 commit 8bea806

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

RubberduckTests/Symbols/DeclarationFinderTests.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
using Rubberduck.VBEditor;
1111
using Antlr4.Runtime;
1212
using Rubberduck.Common;
13+
using Rubberduck.Parsing;
14+
using Rubberduck.Parsing.Grammar;
1315

1416
namespace RubberduckTests.Symbols
1517
{
@@ -1212,6 +1214,44 @@ Dim sht As WorkSheet
12121214
}
12131215
}
12141216

1217+
[Test]
1218+
[Category("Resolver")]
1219+
public void FindParameterFromArgument_WorksWithMultipleScopes()
1220+
{
1221+
var module1 =
1222+
@"Public Sub Foo(arg As Variant)
1223+
End Sub";
1224+
1225+
var module2 =
1226+
@"Private Sub Foo(expected As Variant)
1227+
End Sub
1228+
1229+
Public Sub Bar()
1230+
Dim fooBar As Variant
1231+
Foo fooBar
1232+
End Sub
1233+
";
1234+
var vbe = new MockVbeBuilder()
1235+
.ProjectBuilder("UnderTest", ProjectProtection.Unprotected)
1236+
.AddComponent("Module1", ComponentType.StandardModule, module1, new Selection(1, 1))
1237+
.AddComponent("Module2", ComponentType.StandardModule, module2, new Selection(1, 1))
1238+
.AddProjectToVbeBuilder()
1239+
.Build();
1240+
1241+
using (var state = MockParser.CreateAndParse(vbe.Object))
1242+
{
1243+
var declarations = state.DeclarationFinder.AllDeclarations.ToList();
1244+
var expected = declarations.FirstOrDefault(decl => decl.IdentifierName.Equals("expected"));
1245+
1246+
var enclosing = declarations.FirstOrDefault(decl => decl.IdentifierName.Equals("Bar"));
1247+
var context = enclosing?.Context.GetDescendent<VBAParser.ArgumentExpressionContext>();
1248+
var actual = state.DeclarationFinder.FindParameterFromArgument(context, enclosing);
1249+
1250+
Assert.AreEqual(expected, actual);
1251+
}
1252+
}
1253+
1254+
12151255
[Category("Resolver")]
12161256
[Category("Interfaces")]
12171257
[Test]

0 commit comments

Comments
 (0)