@@ -804,6 +804,55 @@ final class DeclarationTests: XCTestCase {
804
804
}
805
805
"""## )
806
806
}
807
+
808
+ func testLeadingUnexpectedTokens( ) {
809
+ AssertParse ( " #^DIAG_1^#}class C#^DIAG_2^# " ,
810
+ diagnostics: [
811
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before class " ) ,
812
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '{' to start class " ) ,
813
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '}' to end class " ) ,
814
+ ] )
815
+ AssertParse ( " #^DIAG_1^#}enum C#^DIAG_2^# " ,
816
+ diagnostics: [
817
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before enum " ) ,
818
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '{' to start enum " ) ,
819
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '}' to end enum " ) ,
820
+ ] )
821
+ AssertParse ( " #^DIAG_1^#}protocol C#^DIAG_2^# " ,
822
+ diagnostics: [
823
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before protocol " ) ,
824
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '{' to start protocol " ) ,
825
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '}' to end protocol " ) ,
826
+ ] )
827
+ AssertParse ( " #^DIAG_1^#}actor C#^DIAG_2^# " ,
828
+ diagnostics: [
829
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before actor " ) ,
830
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '{' to start actor " ) ,
831
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '}' to end actor " ) ,
832
+ ] )
833
+ AssertParse ( " #^DIAG_1^#}struct C#^DIAG_2^# " ,
834
+ diagnostics: [
835
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before struct " ) ,
836
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '{' to start struct " ) ,
837
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '}' to end struct " ) ,
838
+ ] )
839
+ AssertParse ( " #^DIAG_1^#}func C#^DIAG_2^# " ,
840
+ diagnostics: [
841
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before function " ) ,
842
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected argument list in function declaration " ) ,
843
+ ] )
844
+ AssertParse ( " #^DIAG_1^#}init#^DIAG_2^# " ,
845
+ diagnostics: [
846
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before initializer " ) ,
847
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected argument list in function declaration " ) ,
848
+ ] )
849
+ AssertParse ( " #^DIAG_1^#}subscript#^DIAG_2^# " ,
850
+ diagnostics: [
851
+ DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Unexpected text '}' before subscript " ) ,
852
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected argument list in function declaration " ) ,
853
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '->' in return clause " ) ,
854
+ ] )
855
+ }
807
856
}
808
857
809
858
extension Parser . DeclAttributes {
0 commit comments