@@ -41,6 +41,7 @@ final class DeclarationTests: XCTestCase {
41
41
DiagnosticSpec ( locationMarker: " DIAG1 " , message: " Expected '' in function " ) ,
42
42
DiagnosticSpec ( locationMarker: " DIAG1 " , message: " Expected argument list in function declaration " ) ,
43
43
DiagnosticSpec ( locationMarker: " DIAG2 " , message: " Expected '=' in same type requirement " ) ,
44
+ DiagnosticSpec ( locationMarker: " DIAG2 " , message: " Expected right-hand type of same type requirement " ) ,
44
45
] )
45
46
}
46
47
@@ -77,13 +78,15 @@ final class DeclarationTests: XCTestCase {
77
78
AssertParse ( " class T where t#^DIAG^# " ,
78
79
diagnostics: [
79
80
DiagnosticSpec ( message: " Expected '=' in same type requirement " ) ,
81
+ DiagnosticSpec ( message: " Expected right-hand type of same type requirement " ) ,
80
82
DiagnosticSpec ( message: " Expected '{' to start class " ) ,
81
83
DiagnosticSpec ( message: " Expected '}' to end class " ) ,
82
84
] )
83
85
AssertParse ( " class B<#^DIAG_1^#where g#^DIAG_2^# " ,
84
86
diagnostics: [
85
87
DiagnosticSpec ( locationMarker: " DIAG_1 " , message: " Expected '>' to end generic parameter clause " ) ,
86
88
DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '=' in same type requirement " ) ,
89
+ DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected right-hand type of same type requirement " ) ,
87
90
DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '{' to start class " ) ,
88
91
DiagnosticSpec ( locationMarker: " DIAG_2 " , message: " Expected '}' to end class " ) ,
89
92
] )
@@ -147,7 +150,8 @@ final class DeclarationTests: XCTestCase {
147
150
AssertParse (
148
151
" _ = foo/* */?.description#^DIAG^# " ,
149
152
diagnostics: [
150
- DiagnosticSpec ( message: " Expected ':' after '? ...' in ternary expression " )
153
+ DiagnosticSpec ( message: " Expected ':' after '? ...' in ternary expression " ) ,
154
+ DiagnosticSpec ( message: " Expected expression " ) ,
151
155
]
152
156
)
153
157
@@ -426,9 +430,12 @@ final class DeclarationTests: XCTestCase {
426
430
AssertParse (
427
431
"""
428
432
struct a {
429
- public
433
+ public#^DIAG^#
430
434
}
431
- """
435
+ """ ,
436
+ diagnostics: [
437
+ DiagnosticSpec ( message: " Expected declaration after 'public' in struct " )
438
+ ]
432
439
)
433
440
}
434
441
@@ -519,7 +526,12 @@ final class DeclarationTests: XCTestCase {
519
526
520
527
func testExtraneousRightBraceRecovery( ) {
521
528
AssertParse (
522
- " class ABC { let def = ghi(jkl: mno) } #^DIAG^#} " ,
529
+ """
530
+ class ABC {
531
+ let def = ghi(jkl: mno)
532
+ }
533
+ #^DIAG^#}
534
+ """ ,
523
535
diagnostics: [
524
536
DiagnosticSpec ( message: " Extraneous '}' at top level " )
525
537
]
@@ -534,8 +546,8 @@ final class DeclarationTests: XCTestCase {
534
546
}
535
547
""" ,
536
548
diagnostics: [
537
- // FIXME: This diagnostic should be more contextual
538
- DiagnosticSpec ( message: " Expected '->' in return clause " )
549
+ DiagnosticSpec ( message : " Expected '->' in subscript " ) ,
550
+ DiagnosticSpec ( message: " Expected return type in subscript " ) ,
539
551
]
540
552
)
541
553
}
@@ -575,16 +587,13 @@ final class DeclarationTests: XCTestCase {
575
587
func testExpressionMember( ) {
576
588
AssertParse (
577
589
"""
578
- struct S {
579
- #^DIAG ^#/ ###line 25 " line-directive.swift "
590
+ struct S {#^EXPECTED_DECL^#
591
+ #^UNEXPECTED_TEXT ^#/ ###line 25 " line-directive.swift "
580
592
}
581
593
""" ,
582
594
diagnostics: [
583
- DiagnosticSpec (
584
- message: """
585
- Unexpected text '/ ###line 25 " line-directive.swift " ' in struct
586
- """
587
- )
595
+ DiagnosticSpec ( locationMarker: " EXPECTED_DECL " , message: " Expected declaration after '{' in struct " ) ,
596
+ DiagnosticSpec ( locationMarker: " UNEXPECTED_TEXT " , message: #"Unexpected text '/ ###line 25 "line-directive.swift"' in struct"# )
588
597
]
589
598
)
590
599
}
@@ -758,12 +767,17 @@ final class DeclarationTests: XCTestCase {
758
767
func testMalforedStruct( ) {
759
768
AssertParse (
760
769
"""
761
- struct n#^OPENINGBRACES^##if@#^ENDIF^##^CLOSINGBRACES^#
770
+ struct n#^OPENING_BRACE^#
771
+ #if#^AFTER_POUND_IF^#
772
+ @#^END^#
762
773
""" ,
763
774
diagnostics: [
764
- DiagnosticSpec ( locationMarker: " OPENINGBRACES " , message: " Expected '{' to start struct " ) ,
765
- DiagnosticSpec ( locationMarker: " ENDIF " , message: " Expected '#endif' in conditional compilation block " ) ,
766
- DiagnosticSpec ( locationMarker: " CLOSINGBRACES " , message: " Expected '}' to end struct " )
775
+ DiagnosticSpec ( locationMarker: " OPENING_BRACE " , message: " Expected '{' to start struct " ) ,
776
+ DiagnosticSpec ( locationMarker: " AFTER_POUND_IF " , message: " Expected condition of conditional compilation clause " ) ,
777
+ DiagnosticSpec ( locationMarker: " END " , message: " Expected declaration after '@' in conditional compilation clause " ) ,
778
+ DiagnosticSpec ( locationMarker: " END " , message: " Expected name of attribute " ) ,
779
+ DiagnosticSpec ( locationMarker: " END " , message: " Expected '#endif' in conditional compilation block " ) ,
780
+ DiagnosticSpec ( locationMarker: " END " , message: " Expected '}' to end struct " )
767
781
]
768
782
)
769
783
}
0 commit comments