@@ -6857,5 +6857,217 @@ End Function
6857
6857
Assert . AreEqual ( 2 , debugPrintReferences . Count ( ) ) ;
6858
6858
}
6859
6859
}
6860
+
6861
+ [ Category ( "Grammar" ) ]
6862
+ [ Category ( "Resolver" ) ]
6863
+ [ Test ]
6864
+ public void HiddenEnumVariableHasCorrectName ( )
6865
+ {
6866
+ var moduleCode = $@ "
6867
+ Private Enum SomeEnum
6868
+ [_hiddenElement]
6869
+ End Enum
6870
+
6871
+ Private Function Test() As Variant
6872
+ Debug.Print SomeEnum.[_hiddenElement]
6873
+ End Function
6874
+ " ;
6875
+
6876
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6877
+
6878
+ using ( var state = Resolve ( vbe . Object ) )
6879
+ {
6880
+ var enumMember = state . DeclarationFinder . UserDeclarations ( DeclarationType . EnumerationMember ) . Single ( ) ;
6881
+ var enumMemberName = enumMember . IdentifierName ;
6882
+
6883
+ Assert . AreEqual ( "_hiddenElement" , enumMemberName ) ;
6884
+ }
6885
+ }
6886
+
6887
+ [ Category ( "Grammar" ) ]
6888
+ [ Category ( "Resolver" ) ]
6889
+ [ Test ]
6890
+ public void HiddenEnumVariableHasReference ( )
6891
+ {
6892
+ var moduleCode = $@ "
6893
+ Private Enum SomeEnum
6894
+ [_hiddenElement]
6895
+ End Enum
6896
+
6897
+ Private Function Test() As Variant
6898
+ Debug.Print SomeEnum.[_hiddenElement]
6899
+ End Function
6900
+ " ;
6901
+
6902
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6903
+
6904
+ using ( var state = Resolve ( vbe . Object ) )
6905
+ {
6906
+ var enumMember = state . DeclarationFinder . UserDeclarations ( DeclarationType . EnumerationMember ) . Single ( ) ;
6907
+ var enumMemberReferences = enumMember . References ;
6908
+
6909
+ Assert . AreEqual ( 1 , enumMemberReferences . Count ( ) ) ;
6910
+ }
6911
+ }
6912
+
6913
+ [ Category ( "Grammar" ) ]
6914
+ [ Category ( "Resolver" ) ]
6915
+ [ Test ]
6916
+ [ TestCase ( "nonHiddenElement" ) ]
6917
+ [ TestCase ( "[nonHiddenElement]" ) ]
6918
+ [ TestCase ( "" ) ]
6919
+ public void NonHiddenBracketedEnumVariableHasCorrectName ( string enumElementName )
6920
+ {
6921
+ var moduleCode = $@ "
6922
+ Private Enum SomeEnum
6923
+ [{ enumElementName } ]
6924
+ End Enum
6925
+ " ;
6926
+
6927
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6928
+
6929
+ using ( var state = Resolve ( vbe . Object ) )
6930
+ {
6931
+ var enumMember = state . DeclarationFinder . UserDeclarations ( DeclarationType . EnumerationMember ) . Single ( ) ;
6932
+ var enumMemberName = enumMember . IdentifierName ;
6933
+
6934
+ Assert . AreEqual ( enumElementName , enumMemberName ) ;
6935
+ }
6936
+ }
6937
+
6938
+ [ Category ( "Grammar" ) ]
6939
+ [ Category ( "Resolver" ) ]
6940
+ [ Test ]
6941
+ [ TestCase ( "nonHiddenElement" , "SomeEnum.nonHiddenElement" , 1 ) ]
6942
+ [ TestCase ( "[nonHiddenElement]" , "SomeEnum.[nonHiddenElement]" , 0 ) ]
6943
+ [ TestCase ( "[nonHiddenElement]" , "SomeEnum.[[nonHiddenElement]]" , 1 ) ]
6944
+ [ TestCase ( "nonHiddenElement" , "nonHiddenElement" , 1 ) ]
6945
+ [ TestCase ( "[nonHiddenElement]" , "[[nonHiddenElement]]" , 1 ) ]
6946
+ [ TestCase ( "" , "SomeEnum.[]" , 1 ) ]
6947
+ [ TestCase ( "" , "[]" , 1 ) ]
6948
+ public void NonHiddenBracketedEnumVariableHasReference ( string enumElementName , string referenceText , int expectedNumberOfReferences )
6949
+ {
6950
+ var moduleCode = $@ "
6951
+ Private Enum SomeEnum
6952
+ [{ enumElementName } ]
6953
+ End Enum
6954
+
6955
+ Private Function Test() As Variant
6956
+ Debug.Print { referenceText }
6957
+ End Function
6958
+ " ;
6959
+
6960
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6961
+
6962
+ using ( var state = Resolve ( vbe . Object ) )
6963
+ {
6964
+ var enumMember = state . DeclarationFinder . UserDeclarations ( DeclarationType . EnumerationMember ) . Single ( ) ;
6965
+ var enumMemberReferences = enumMember . References ;
6966
+
6967
+ Assert . AreEqual ( expectedNumberOfReferences , enumMemberReferences . Count ( ) ) ;
6968
+ }
6969
+ }
6970
+
6971
+ [ Category ( "Grammar" ) ]
6972
+ [ Category ( "Resolver" ) ]
6973
+ [ Test ]
6974
+ public void BracketedEnumElementsCorrectElementReferenced ( )
6975
+ {
6976
+ var moduleCode = $@ "
6977
+ Private Enum SomeEnum
6978
+ enumElement
6979
+ [[enumElement]]
6980
+ End Enum
6981
+
6982
+ Private Function Test() As Variant
6983
+ Debug.Print SomeEnum.[enumElement]
6984
+ End Function
6985
+ " ;
6986
+
6987
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6988
+
6989
+ using ( var state = Resolve ( vbe . Object ) )
6990
+ {
6991
+ var module = state . DeclarationFinder
6992
+ . AllModules . Single ( qmn => qmn . ComponentType == ComponentType . StandardModule ) ;
6993
+ var enumMemberReference = state . DeclarationFinder
6994
+ . IdentifierReferences ( module )
6995
+ . Single ( reference => reference . Declaration . DeclarationType == DeclarationType . EnumerationMember ) ;
6996
+
6997
+ var referencedDeclarationName = enumMemberReference . Declaration . IdentifierName ;
6998
+
6999
+ Assert . AreEqual ( "enumElement" , referencedDeclarationName ) ;
7000
+ }
7001
+ }
7002
+
7003
+ [ Category ( "Grammar" ) ]
7004
+ [ Category ( "Resolver" ) ]
7005
+ [ Test ]
7006
+ public void BracketedEnumElementsCorrectElementReferencedIdentifierName ( )
7007
+ {
7008
+ var moduleCode = $@ "
7009
+ Private Enum SomeEnum
7010
+ enumElement
7011
+ [[enumElement]]
7012
+ End Enum
7013
+
7014
+ Private Function Test() As Variant
7015
+ Debug.Print SomeEnum.[enumElement]
7016
+ End Function
7017
+ " ;
7018
+
7019
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
7020
+
7021
+ using ( var state = Resolve ( vbe . Object ) )
7022
+ {
7023
+ var module = state . DeclarationFinder
7024
+ . AllModules . Single ( qmn => qmn . ComponentType == ComponentType . StandardModule ) ;
7025
+ var enumMemberReference = state . DeclarationFinder
7026
+ . IdentifierReferences ( module )
7027
+ . Single ( reference => reference . Declaration . DeclarationType == DeclarationType . EnumerationMember ) ;
7028
+
7029
+ Assert . AreEqual ( "enumElement" , enumMemberReference . IdentifierName ) ;
7030
+ }
7031
+ }
7032
+
7033
+ [ Category ( "Grammar" ) ]
7034
+ [ Category ( "Resolver" ) ]
7035
+ [ Test ]
7036
+ [ TestCase ( "TestModule.[Foo]" , "Foo" ) ]
7037
+ [ TestCase ( "TestModule.[Bar] 23" , "Bar" ) ]
7038
+ [ TestCase ( "Debug.Print TestModule.[Baz](42)" , "Baz" ) ]
7039
+ [ TestCase ( "[Foo]" , "Foo" ) ]
7040
+ [ TestCase ( "[Bar] 23" , "Bar" ) ]
7041
+ [ TestCase ( "Debug.Print [Baz](42)" , "Baz" ) ]
7042
+ public void BracketedMemberExpressionCorrectReferencedIdentifierName ( string statement , string expectedReferenceText )
7043
+ {
7044
+ var moduleCode = $@ "
7045
+ Private Sub Foo()
7046
+ End Sub
7047
+
7048
+ Private Sub Bar(arg As Long)
7049
+ End Sub
7050
+
7051
+ Private Function Baz(arg As Long) As Long
7052
+ End Function
7053
+
7054
+ Private Function Test() As Variant
7055
+ { statement }
7056
+ End Function
7057
+ " ;
7058
+
7059
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , "TestModule" , out _ ) ;
7060
+
7061
+ using ( var state = Resolve ( vbe . Object ) )
7062
+ {
7063
+ var module = state . DeclarationFinder
7064
+ . AllModules . Single ( qmn => qmn . ComponentType == ComponentType . StandardModule ) ;
7065
+ var enumMemberReference = state . DeclarationFinder
7066
+ . IdentifierReferences ( module )
7067
+ . Single ( reference => reference . Declaration . DeclarationType . HasFlag ( DeclarationType . Member ) ) ;
7068
+
7069
+ Assert . AreEqual ( expectedReferenceText , enumMemberReference . IdentifierName ) ;
7070
+ }
7071
+ }
6860
7072
}
6861
7073
}
0 commit comments