@@ -6857,5 +6857,172 @@ 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
+ public void NonHiddenBracketedEnumVariableHasCorrectName ( string enumElementName )
6919
+ {
6920
+ var moduleCode = $@ "
6921
+ Private Enum SomeEnum
6922
+ [{ enumElementName } ]
6923
+ End Enum
6924
+ " ;
6925
+
6926
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6927
+
6928
+ using ( var state = Resolve ( vbe . Object ) )
6929
+ {
6930
+ var enumMember = state . DeclarationFinder . UserDeclarations ( DeclarationType . EnumerationMember ) . Single ( ) ;
6931
+ var enumMemberName = enumMember . IdentifierName ;
6932
+
6933
+ Assert . AreEqual ( enumElementName , enumMemberName ) ;
6934
+ }
6935
+ }
6936
+
6937
+ [ Category ( "Grammar" ) ]
6938
+ [ Category ( "Resolver" ) ]
6939
+ [ Test ]
6940
+ [ TestCase ( "nonHiddenElement" , "nonHiddenElement" , 1 ) ]
6941
+ [ TestCase ( "[nonHiddenElement]" , "[nonHiddenElement]" , 0 ) ]
6942
+ [ TestCase ( "[nonHiddenElement]" , "[[nonHiddenElement]]" , 1 ) ]
6943
+ public void NonHiddenBracketedEnumVariableHasReference ( string enumElementName , string referenceText , int expectedNumberOfReferences )
6944
+ {
6945
+ var moduleCode = $@ "
6946
+ Private Enum SomeEnum
6947
+ [{ enumElementName } ]
6948
+ End Enum
6949
+
6950
+ Private Function Test() As Variant
6951
+ Debug.Print SomeEnum.{ referenceText }
6952
+ End Function
6953
+ " ;
6954
+
6955
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6956
+
6957
+ using ( var state = Resolve ( vbe . Object ) )
6958
+ {
6959
+ var enumMember = state . DeclarationFinder . UserDeclarations ( DeclarationType . EnumerationMember ) . Single ( ) ;
6960
+ var enumMemberReferences = enumMember . References ;
6961
+
6962
+ Assert . AreEqual ( expectedNumberOfReferences , enumMemberReferences . Count ( ) ) ;
6963
+ }
6964
+ }
6965
+
6966
+ [ Category ( "Grammar" ) ]
6967
+ [ Category ( "Resolver" ) ]
6968
+ [ Test ]
6969
+ public void BracketedEnumElementsCorrectElementReferenced ( )
6970
+ {
6971
+ var moduleCode = $@ "
6972
+ Private Enum SomeEnum
6973
+ enumElement
6974
+ [[enumElement]]
6975
+ End Enum
6976
+
6977
+ Private Function Test() As Variant
6978
+ Debug.Print SomeEnum.[enumElement]
6979
+ End Function
6980
+ " ;
6981
+
6982
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
6983
+
6984
+ using ( var state = Resolve ( vbe . Object ) )
6985
+ {
6986
+ var module = state . DeclarationFinder
6987
+ . AllModules . Single ( qmn => qmn . ComponentType == ComponentType . StandardModule ) ;
6988
+ var enumMemberReference = state . DeclarationFinder
6989
+ . IdentifierReferences ( module )
6990
+ . Single ( reference => reference . Declaration . DeclarationType == DeclarationType . EnumerationMember ) ;
6991
+
6992
+ var referencedDeclarationName = enumMemberReference . Declaration . IdentifierName ;
6993
+
6994
+ Assert . AreEqual ( "enumElement" , referencedDeclarationName ) ;
6995
+ }
6996
+ }
6997
+
6998
+ [ Category ( "Grammar" ) ]
6999
+ [ Category ( "Resolver" ) ]
7000
+ [ Test ]
7001
+ public void BracketedEnumElementsCorrectElementReferencedIdentifierName ( )
7002
+ {
7003
+ var moduleCode = $@ "
7004
+ Private Enum SomeEnum
7005
+ enumElement
7006
+ [[enumElement]]
7007
+ End Enum
7008
+
7009
+ Private Function Test() As Variant
7010
+ Debug.Print SomeEnum.[enumElement]
7011
+ End Function
7012
+ " ;
7013
+
7014
+ var vbe = MockVbeBuilder . BuildFromSingleStandardModule ( moduleCode , out _ ) ;
7015
+
7016
+ using ( var state = Resolve ( vbe . Object ) )
7017
+ {
7018
+ var module = state . DeclarationFinder
7019
+ . AllModules . Single ( qmn => qmn . ComponentType == ComponentType . StandardModule ) ;
7020
+ var enumMemberReference = state . DeclarationFinder
7021
+ . IdentifierReferences ( module )
7022
+ . Single ( reference => reference . Declaration . DeclarationType == DeclarationType . EnumerationMember ) ;
7023
+
7024
+ Assert . AreEqual ( "enumElement" , enumMemberReference . IdentifierName ) ;
7025
+ }
7026
+ }
6860
7027
}
6861
7028
}
0 commit comments