@@ -4790,6 +4790,7 @@ End Sub
4790
4790
Assert . IsTrue ( defaultMemberReference . IsNonIndexedDefaultMemberAccess ) ;
4791
4791
Assert . AreEqual ( 1 , defaultMemberReference . DefaultMemberRecursionDepth ) ;
4792
4792
Assert . IsTrue ( defaultMemberReference . IsAssignment ) ;
4793
+ Assert . IsFalse ( defaultMemberReference . IsProcedureCoercion ) ;
4793
4794
}
4794
4795
}
4795
4796
@@ -4906,10 +4907,10 @@ End Sub
4906
4907
[ Test ]
4907
4908
[ Category ( "Grammar" ) ]
4908
4909
[ Category ( "Resolver" ) ]
4909
- public void ParameterizedProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext ( )
4910
+ public void NonParameterizedProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext ( )
4910
4911
{
4911
4912
var class1Code = @"
4912
- Public Sub Foo(arg As Long )
4913
+ Public Sub Foo()
4913
4914
Attribute Foo.VB_UserMemId = 0
4914
4915
End Sub
4915
4916
" ;
@@ -4924,7 +4925,7 @@ End Function
4924
4925
var moduleCode = $@ "
4925
4926
Private Function Foo() As Variant
4926
4927
Dim cls As new Class2
4927
- cls.Baz 42
4928
+ cls
4928
4929
End Function
4929
4930
4930
4931
Private Sub Bar(arg As Long)
@@ -4939,7 +4940,7 @@ End Sub
4939
4940
( "Class2" , class2Code , ComponentType . ClassModule ) ,
4940
4941
( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
4941
4942
4942
- var selection = new Selection ( 4 , 5 , 4 , 12 ) ;
4943
+ var selection = new Selection ( 4 , 5 , 4 , 8 ) ;
4943
4944
4944
4945
using ( var state = Resolve ( vbe . Object ) )
4945
4946
{
@@ -4948,19 +4949,20 @@ End Sub
4948
4949
var defaultMemberReference = state . DeclarationFinder . IdentifierReferences ( qualifiedSelection ) . Last ( ) ;
4949
4950
var referencedDeclaration = defaultMemberReference . Declaration ;
4950
4951
4951
- var expectedReferencedDeclarationName = "Class1.Foo " ;
4952
+ var expectedReferencedDeclarationName = "Class2.Baz " ;
4952
4953
var actualReferencedDeclarationName = $ "{ referencedDeclaration . ComponentName } .{ referencedDeclaration . IdentifierName } ";
4953
4954
4954
4955
Assert . AreEqual ( expectedReferencedDeclarationName , actualReferencedDeclarationName ) ;
4955
- Assert . IsTrue ( defaultMemberReference . IsIndexedDefaultMemberAccess ) ;
4956
+ Assert . IsTrue ( defaultMemberReference . IsNonIndexedDefaultMemberAccess ) ;
4957
+ Assert . IsTrue ( defaultMemberReference . IsProcedureCoercion ) ;
4956
4958
Assert . AreEqual ( 1 , defaultMemberReference . DefaultMemberRecursionDepth ) ;
4957
4959
}
4958
4960
}
4959
4961
4960
4962
[ Test ]
4961
4963
[ Category ( "Grammar" ) ]
4962
4964
[ Category ( "Resolver" ) ]
4963
- public void NonParameterizedProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext ( )
4965
+ public void NonParameterizedUnboundProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext ( )
4964
4966
{
4965
4967
var class1Code = @"
4966
4968
Public Sub Foo()
@@ -4977,7 +4979,7 @@ End Function
4977
4979
4978
4980
var moduleCode = $@ "
4979
4981
Private Function Foo() As Variant
4980
- Dim cls As new Class2
4982
+ Dim cls As Object
4981
4983
cls
4982
4984
End Function
4983
4985
@@ -4998,26 +5000,23 @@ End Sub
4998
5000
using ( var state = Resolve ( vbe . Object ) )
4999
5001
{
5000
5002
var module = state . DeclarationFinder . AllModules . First ( qmn => qmn . ComponentName == "Module1" ) ;
5001
- var qualifiedSelection = new QualifiedSelection ( module , selection ) ;
5002
- var defaultMemberReference = state . DeclarationFinder . IdentifierReferences ( qualifiedSelection ) . Last ( ) ;
5003
- var referencedDeclaration = defaultMemberReference . Declaration ;
5003
+ var defaultMemberReference = state . DeclarationFinder
5004
+ . UnboundDefaultMemberAccesses ( module )
5005
+ . Last ( reference => reference . Selection . Equals ( selection ) ) ;
5004
5006
5005
- var expectedReferencedDeclarationName = "Class2.Baz" ;
5006
- var actualReferencedDeclarationName = $ "{ referencedDeclaration . ComponentName } .{ referencedDeclaration . IdentifierName } ";
5007
-
5008
- Assert . AreEqual ( expectedReferencedDeclarationName , actualReferencedDeclarationName ) ;
5009
5007
Assert . IsTrue ( defaultMemberReference . IsNonIndexedDefaultMemberAccess ) ;
5008
+ Assert . IsTrue ( defaultMemberReference . IsProcedureCoercion ) ;
5010
5009
Assert . AreEqual ( 1 , defaultMemberReference . DefaultMemberRecursionDepth ) ;
5011
5010
}
5012
5011
}
5013
5012
5014
5013
[ Test ]
5015
5014
[ Category ( "Grammar" ) ]
5016
5015
[ Category ( "Resolver" ) ]
5017
- public void ParameterizedProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext_ExplicitCall ( )
5016
+ public void NonParameterizedProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext_ExplicitCall ( )
5018
5017
{
5019
5018
var class1Code = @"
5020
- Public Sub Foo(arg As Long )
5019
+ Public Sub Foo()
5021
5020
Attribute Foo.VB_UserMemId = 0
5022
5021
End Sub
5023
5022
" ;
@@ -5032,7 +5031,7 @@ End Function
5032
5031
var moduleCode = $@ "
5033
5032
Private Function Foo() As Variant
5034
5033
Dim cls As new Class2
5035
- Call cls.Baz(42)
5034
+ Call cls
5036
5035
End Function
5037
5036
5038
5037
Private Sub Bar(arg As Long)
@@ -5047,7 +5046,7 @@ End Sub
5047
5046
( "Class2" , class2Code , ComponentType . ClassModule ) ,
5048
5047
( "Module1" , moduleCode , ComponentType . StandardModule ) ) ;
5049
5048
5050
- var selection = new Selection ( 4 , 10 , 4 , 17 ) ;
5049
+ var selection = new Selection ( 4 , 10 , 4 , 13 ) ;
5051
5050
5052
5051
using ( var state = Resolve ( vbe . Object ) )
5053
5052
{
@@ -5056,19 +5055,20 @@ End Sub
5056
5055
var defaultMemberReference = state . DeclarationFinder . IdentifierReferences ( qualifiedSelection ) . Last ( ) ;
5057
5056
var referencedDeclaration = defaultMemberReference . Declaration ;
5058
5057
5059
- var expectedReferencedDeclarationName = "Class1.Foo " ;
5058
+ var expectedReferencedDeclarationName = "Class2.Baz " ;
5060
5059
var actualReferencedDeclarationName = $ "{ referencedDeclaration . ComponentName } .{ referencedDeclaration . IdentifierName } ";
5061
5060
5062
5061
Assert . AreEqual ( expectedReferencedDeclarationName , actualReferencedDeclarationName ) ;
5063
- Assert . IsTrue ( defaultMemberReference . IsIndexedDefaultMemberAccess ) ;
5062
+ Assert . IsTrue ( defaultMemberReference . IsNonIndexedDefaultMemberAccess ) ;
5063
+ Assert . IsTrue ( defaultMemberReference . IsProcedureCoercion ) ;
5064
5064
Assert . AreEqual ( 1 , defaultMemberReference . DefaultMemberRecursionDepth ) ;
5065
5065
}
5066
5066
}
5067
5067
5068
5068
[ Test ]
5069
5069
[ Category ( "Grammar" ) ]
5070
5070
[ Category ( "Resolver" ) ]
5071
- public void NonParameterizedProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext_ExplicitCall ( )
5071
+ public void NonParameterizedUnboundProcedureCoercionDefaultMemberAccessReferenceToDefaultMemberOnEntireContext_ExplicitCall ( )
5072
5072
{
5073
5073
var class1Code = @"
5074
5074
Public Sub Foo()
@@ -5085,7 +5085,7 @@ End Function
5085
5085
5086
5086
var moduleCode = $@ "
5087
5087
Private Function Foo() As Variant
5088
- Dim cls As new Class2
5088
+ Dim cls As Object
5089
5089
Call cls
5090
5090
End Function
5091
5091
@@ -5106,15 +5106,12 @@ End Sub
5106
5106
using ( var state = Resolve ( vbe . Object ) )
5107
5107
{
5108
5108
var module = state . DeclarationFinder . AllModules . First ( qmn => qmn . ComponentName == "Module1" ) ;
5109
- var qualifiedSelection = new QualifiedSelection ( module , selection ) ;
5110
- var defaultMemberReference = state . DeclarationFinder . IdentifierReferences ( qualifiedSelection ) . Last ( ) ;
5111
- var referencedDeclaration = defaultMemberReference . Declaration ;
5109
+ var defaultMemberReference = state . DeclarationFinder
5110
+ . UnboundDefaultMemberAccesses ( module )
5111
+ . Last ( reference => reference . Selection . Equals ( selection ) ) ;
5112
5112
5113
- var expectedReferencedDeclarationName = "Class2.Baz" ;
5114
- var actualReferencedDeclarationName = $ "{ referencedDeclaration . ComponentName } .{ referencedDeclaration . IdentifierName } ";
5115
-
5116
- Assert . AreEqual ( expectedReferencedDeclarationName , actualReferencedDeclarationName ) ;
5117
5113
Assert . IsTrue ( defaultMemberReference . IsNonIndexedDefaultMemberAccess ) ;
5114
+ Assert . IsTrue ( defaultMemberReference . IsProcedureCoercion ) ;
5118
5115
Assert . AreEqual ( 1 , defaultMemberReference . DefaultMemberRecursionDepth ) ;
5119
5116
}
5120
5117
}
@@ -5169,6 +5166,7 @@ End Sub
5169
5166
5170
5167
Assert . AreEqual ( expectedReferencedDeclarationName , actualReferencedDeclarationName ) ;
5171
5168
Assert . IsTrue ( defaultMemberReference . IsNonIndexedDefaultMemberAccess ) ;
5169
+ Assert . IsTrue ( defaultMemberReference . IsProcedureCoercion ) ;
5172
5170
Assert . AreEqual ( 1 , defaultMemberReference . DefaultMemberRecursionDepth ) ;
5173
5171
}
5174
5172
}
@@ -5224,6 +5222,7 @@ End Sub
5224
5222
5225
5223
Assert . AreEqual ( expectedReferencedDeclarationName , actualReferencedDeclarationName ) ;
5226
5224
Assert . IsTrue ( defaultMemberReference . IsNonIndexedDefaultMemberAccess ) ;
5225
+ Assert . IsTrue ( defaultMemberReference . IsProcedureCoercion ) ;
5227
5226
Assert . AreEqual ( 1 , defaultMemberReference . DefaultMemberRecursionDepth ) ;
5228
5227
}
5229
5228
}
0 commit comments