Skip to content

Commit 2de65f7

Browse files
committed
Add further test for access without parentheses to a function returning a class with default member
1 parent 49cacb3 commit 2de65f7

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

RubberduckTests/Grammar/ResolverTests.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4190,6 +4190,52 @@ Dim baz As Class1
41904190
Set baz = Foo()
41914191
End Sub
41924192
4193+
Private Function Foo() As Class1
4194+
End Function
4195+
";
4196+
4197+
var vbe = MockVbeBuilder.BuildFromModules(
4198+
("Class1", classCode, ComponentType.ClassModule),
4199+
("Module1", moduleCode, ComponentType.StandardModule));
4200+
4201+
var selection = new Selection(4, 15, 4, 18);
4202+
4203+
using (var state = Resolve(vbe.Object))
4204+
{
4205+
var module = state.DeclarationFinder.AllModules.First(qmn => qmn.ComponentName == "Module1");
4206+
var qualifiedSelection = new QualifiedSelection(module, selection);
4207+
var reference = state.DeclarationFinder.IdentifierReferences(qualifiedSelection).Last();
4208+
var referencedDeclaration = reference.Declaration;
4209+
4210+
var expectedReferencedDeclarationName = "Module1.Foo";
4211+
var actualReferencedDeclarationName = $"{referencedDeclaration.ComponentName}.{referencedDeclaration.IdentifierName}";
4212+
4213+
var expectedAsTypeName = "Class1";
4214+
var actualAsTypeName = referencedDeclaration.AsTypeName;
4215+
4216+
Assert.AreEqual(expectedReferencedDeclarationName, actualReferencedDeclarationName);
4217+
Assert.AreEqual(expectedAsTypeName, actualAsTypeName);
4218+
Assert.AreEqual(0, reference.DefaultMemberRecursionDepth);
4219+
}
4220+
}
4221+
4222+
[Category("Grammar")]
4223+
[Category("Resolver")]
4224+
[Test]
4225+
public void SimpleNameExpressionForFunctionWithoutArgumentsAnsdFunctionReturningClassWithParameterlessDefaultMemberReferencesFunction()
4226+
{
4227+
var classCode = @"
4228+
Public Function Foo() As String
4229+
Attribute Foo.VB_UserMemId = 0
4230+
End Function
4231+
";
4232+
4233+
var moduleCode = @"
4234+
Private Sub Bar()
4235+
Dim baz As Class1
4236+
Set baz = Foo
4237+
End Sub
4238+
41934239
Private Function Foo() As Class1
41944240
End Function
41954241
";

0 commit comments

Comments
 (0)