@@ -1976,5 +1976,152 @@ End Property
1976
1976
1977
1977
Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1978
1978
}
1979
+
1980
+ [ TestMethod ]
1981
+ public void QualifiedSetStatement_FirstSectionDoesNotHaveAssignmentFlag ( )
1982
+ {
1983
+ // arrange
1984
+ var variableDeclarationClass = @"
1985
+ Public foo As Boolean
1986
+ " ;
1987
+
1988
+ var classVariableDeclarationClass = @"
1989
+ Public myClass As Class1
1990
+ " ;
1991
+
1992
+ var variableCallClass = @"
1993
+ Public Sub bar()
1994
+ Dim myClassN As Class2
1995
+ Set myClassN.myClass.foo = True
1996
+ End Sub
1997
+ " ;
1998
+ // act
1999
+ var state = Resolve ( variableDeclarationClass , classVariableDeclarationClass , variableCallClass ) ;
2000
+
2001
+ // assert
2002
+ var declaration = state . AllUserDeclarations . Single ( item =>
2003
+ item . DeclarationType == DeclarationType . Variable && item . IdentifierName == "myClassN" ) ;
2004
+
2005
+ Assert . IsFalse ( declaration . References . ElementAt ( 0 ) . IsAssignment ) ;
2006
+ }
2007
+
2008
+ [ TestMethod ]
2009
+ public void QualifiedSetStatement_MiddleSectionDoesNotHaveAssignmentFlag ( )
2010
+ {
2011
+ // arrange
2012
+ var variableDeclarationClass = @"
2013
+ Public foo As Boolean
2014
+ " ;
2015
+
2016
+ var classVariableDeclarationClass = @"
2017
+ Public myClass As Class1
2018
+ " ;
2019
+
2020
+ var variableCallClass = @"
2021
+ Public Sub bar()
2022
+ Dim myClassN As Class2
2023
+ Set myClassN.myClass.foo = True
2024
+ End Sub
2025
+ " ;
2026
+ // act
2027
+ var state = Resolve ( variableDeclarationClass , classVariableDeclarationClass , variableCallClass ) ;
2028
+
2029
+ // assert
2030
+ var declaration = state . AllUserDeclarations . Single ( item =>
2031
+ item . DeclarationType == DeclarationType . Variable && item . IdentifierName == "myClass" ) ;
2032
+
2033
+ Assert . IsFalse ( declaration . References . ElementAt ( 0 ) . IsAssignment ) ;
2034
+ }
2035
+
2036
+ [ TestMethod ]
2037
+ public void QualifiedSetStatement_LastSectionHasAssignmentFlag ( )
2038
+ {
2039
+ // arrange
2040
+ var variableDeclarationClass = @"
2041
+ Public foo As Boolean
2042
+ " ;
2043
+
2044
+ var classVariableDeclarationClass = @"
2045
+ Public myClass As Class1
2046
+ " ;
2047
+
2048
+ var variableCallClass = @"
2049
+ Public Sub bar()
2050
+ Dim myClassN As Class2
2051
+ Set myClassN.myClass.foo = True
2052
+ End Sub
2053
+ " ;
2054
+ // act
2055
+ var state = Resolve ( variableDeclarationClass , classVariableDeclarationClass , variableCallClass ) ;
2056
+
2057
+ // assert
2058
+ var declaration = state . AllUserDeclarations . Single ( item =>
2059
+ item . DeclarationType == DeclarationType . Variable && item . IdentifierName == "foo" ) ;
2060
+
2061
+ Assert . IsTrue ( declaration . References . ElementAt ( 0 ) . IsAssignment ) ;
2062
+ }
2063
+
2064
+ [ TestMethod ]
2065
+ public void SetStatement_HasAssignmentFlag ( )
2066
+ {
2067
+ // arrange
2068
+ var variableDeclarationClass = @"
2069
+ Public foo As Variant
2070
+
2071
+ Public Sub bar()
2072
+ Set foo = New Class2
2073
+ End Sub
2074
+ " ;
2075
+ // act
2076
+ var state = Resolve ( variableDeclarationClass , string . Empty ) ;
2077
+
2078
+ // assert
2079
+ var declaration = state . AllUserDeclarations . Single ( item =>
2080
+ item . DeclarationType == DeclarationType . Variable && item . IdentifierName == "foo" ) ;
2081
+
2082
+ Assert . IsTrue ( declaration . References . ElementAt ( 0 ) . IsAssignment ) ;
2083
+ }
2084
+
2085
+ [ TestMethod ]
2086
+ public void ImplicitLetStatement_HasAssignmentFlag ( )
2087
+ {
2088
+ // arrange
2089
+ var variableDeclarationClass = @"
2090
+ Public foo As Boolean
2091
+
2092
+ Public Sub bar()
2093
+ foo = True
2094
+ End Sub
2095
+ " ;
2096
+ // act
2097
+ var state = Resolve ( variableDeclarationClass ) ;
2098
+
2099
+ // assert
2100
+ var declaration = state . AllUserDeclarations . Single ( item =>
2101
+ item . DeclarationType == DeclarationType . Variable && item . IdentifierName == "foo" ) ;
2102
+
2103
+ Assert . IsTrue ( declaration . References . ElementAt ( 0 ) . IsAssignment ) ;
2104
+ }
2105
+
2106
+ [ TestMethod ]
2107
+ public void ExplicitLetStatement_HasAssignmentFlag ( )
2108
+ {
2109
+ // arrange
2110
+ var variableDeclarationClass = @"
2111
+ Public foo As Boolean
2112
+
2113
+ Public Sub bar()
2114
+ Let foo = True
2115
+ End Sub
2116
+ " ;
2117
+ // act
2118
+ var state = Resolve ( variableDeclarationClass ) ;
2119
+
2120
+ // assert
2121
+ var declaration = state . AllUserDeclarations . Single ( item =>
2122
+ item . DeclarationType == DeclarationType . Variable && item . IdentifierName == "foo" ) ;
2123
+
2124
+ Assert . IsTrue ( declaration . References . ElementAt ( 0 ) . IsAssignment ) ;
2125
+ }
1979
2126
}
1980
2127
}
0 commit comments