Skip to content

Commit b95a0b0

Browse files
committed
Added missing fix its
1 parent 92178c0 commit b95a0b0

File tree

6 files changed

+117
-45
lines changed

6 files changed

+117
-45
lines changed

Tests/SwiftParserTest/Assertions.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,7 @@ func assertParse<S: SyntaxProtocol>(
594594
)
595595
} else {
596596
for (diag, expectedDiag) in zip(diags, expectedDiagnostics) {
597+
XCTAssertEqual(diag.fixIts.map { $0.message.message }, expectedDiag.fixIts ?? [], file: file, line: expectedDiag.line)
597598
assertDiagnostic(diag, in: tree, markerLocations: markerLocations, expected: expectedDiag, file: expectedDiag.file, line: expectedDiag.line)
598599
}
599600
}

Tests/SwiftParserTest/VariadicGenericsTests.swift

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -561,8 +561,11 @@ final class TypeParameterPackTests: XCTestCase {
561561
var foo: (bar: Int 1️⃣bar2: Int)
562562
""",
563563
diagnostics: [
564-
DiagnosticSpec(message: "expected ',' in tuple type")
565-
]
564+
DiagnosticSpec(message: "expected ',' in tuple type", fixIts: ["insert ','"])
565+
],
566+
fixedSource: """
567+
var foo: (bar: Int, bar2: Int)
568+
"""
566569
)
567570

568571
assertParse(
@@ -579,8 +582,11 @@ final class TypeParameterPackTests: XCTestCase {
579582
var foo: (a 1️⃣Int)
580583
""",
581584
diagnostics: [
582-
DiagnosticSpec(message: "expected ':' in tuple type")
583-
]
585+
DiagnosticSpec(message: "expected ':' in tuple type", fixIts: ["insert ':'"])
586+
],
587+
fixedSource: """
588+
var foo: (a: Int)
589+
"""
584590
)
585591

586592
assertParse(
@@ -607,26 +613,35 @@ final class TypeParameterPackTests: XCTestCase {
607613
var foo: (Array<Foo> 1️⃣Array<Bar>)
608614
""",
609615
diagnostics: [
610-
DiagnosticSpec(message: "expected ',' in tuple type")
611-
]
616+
DiagnosticSpec(message: "expected ',' in tuple type", fixIts: ["insert ','"])
617+
],
618+
fixedSource: """
619+
var foo: (Array<Foo> , Array<Bar>)
620+
"""
612621
)
613622

614623
assertParse(
615624
"""
616625
var foo: (a 1️⃣Array<Bar>)
617626
""",
618627
diagnostics: [
619-
DiagnosticSpec(message: "expected ':' in tuple type")
620-
]
628+
DiagnosticSpec(message: "expected ':' in tuple type", fixIts: ["insert ':'"])
629+
],
630+
fixedSource: """
631+
var foo: (a: Array<Bar>)
632+
"""
621633
)
622634

623635
assertParse(
624636
"""
625637
var foo: (Array<Foo> 1️⃣a)
626638
""",
627639
diagnostics: [
628-
DiagnosticSpec(message: "expected ',' in tuple type")
629-
]
640+
DiagnosticSpec(message: "expected ',' in tuple type", fixIts: ["insert ','"])
641+
],
642+
fixedSource: """
643+
var foo: (Array<Foo> , a)
644+
"""
630645
)
631646
}
632647
}

Tests/SwiftParserTest/translated/AsyncTests.swift

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ final class AsyncTests: XCTestCase {
5959
assertParse(
6060
"func asyncGlobal5() -> Int 1️⃣async throws { }",
6161
diagnostics: [
62-
DiagnosticSpec(message: "'async throws' must preceed '->'")
62+
DiagnosticSpec(message: "'async throws' must preceed '->'", fixIts: ["move 'async throws' in front of '->'"])
6363
],
6464
fixedSource: "func asyncGlobal5() async throws -> Int { }"
6565
)
@@ -79,7 +79,7 @@ final class AsyncTests: XCTestCase {
7979
assertParse(
8080
"func asyncGlobal7() throws -> Int 1️⃣async { }",
8181
diagnostics: [
82-
DiagnosticSpec(message: "'async' must preceed '->'")
82+
DiagnosticSpec(message: "'async' must preceed '->'", fixIts: ["move 'async' in front of '->'"])
8383
],
8484
fixedSource: "func asyncGlobal7() async throws -> Int { }"
8585
)
@@ -118,7 +118,7 @@ final class AsyncTests: XCTestCase {
118118
}
119119
""",
120120
diagnostics: [
121-
DiagnosticSpec(locationMarker: "1️⃣", message: "deinitializers cannot have a name"),
121+
DiagnosticSpec(locationMarker: "1️⃣", message: "deinitializers cannot have a name", fixIts: ["remove 'async'"]),
122122
DiagnosticSpec(locationMarker: "2️⃣", message: "unexpected code 'async' in subscript"),
123123
]
124124
)
@@ -144,7 +144,7 @@ final class AsyncTests: XCTestCase {
144144
assertParse(
145145
"typealias AsyncFunc3 = () throws 1️⃣async -> ()",
146146
diagnostics: [
147-
DiagnosticSpec(message: "'async' must precede 'throws'")
147+
DiagnosticSpec(message: "'async' must precede 'throws'", fixIts: ["move 'async' in front of 'throws'"])
148148
],
149149
fixedSource: "typealias AsyncFunc3 = () async throws -> ()"
150150
)
@@ -170,7 +170,7 @@ final class AsyncTests: XCTestCase {
170170
assertParse(
171171
"let _ = [() throws 1️⃣async -> ()]()",
172172
diagnostics: [
173-
DiagnosticSpec(message: "'async' must precede 'throws'")
173+
DiagnosticSpec(message: "'async' must precede 'throws'", fixIts: ["move 'async' in front of 'throws'"])
174174
],
175175
fixedSource: "let _ = [() async throws -> ()]()"
176176
)
@@ -182,8 +182,11 @@ final class AsyncTests: XCTestCase {
182182
let _ = [() -> 1️⃣async ()]()
183183
""",
184184
diagnostics: [
185-
DiagnosticSpec(message: "'async' must preceed '->'")
186-
]
185+
DiagnosticSpec(message: "'async' must preceed '->'", fixIts: ["move 'async' in front of '->'"])
186+
],
187+
fixedSource: """
188+
let _ = [() async -> ()]()
189+
"""
187190
)
188191
}
189192

Tests/SwiftParserTest/translated/AvailabilityQueryUnavailabilityTests.swift

Lines changed: 68 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,12 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
9090
}
9191
""",
9292
diagnostics: [
93-
DiagnosticSpec(message: "expected '(', '@availability' arguments, and ')' in availability condition")
94-
]
93+
DiagnosticSpec(message: "expected '(', '@availability' arguments, and ')' in availability condition", fixIts: ["insert '(', '@availability' arguments, and ')'"])
94+
],
95+
fixedSource: """
96+
if #unavailable( <#identifier#>){
97+
}
98+
"""
9599
)
96100
}
97101

@@ -102,9 +106,13 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
102106
}
103107
""",
104108
diagnostics: [
105-
DiagnosticSpec(message: "expected version restriction in availability argument"),
106-
DiagnosticSpec(message: "expected ')' to end availability condition"),
107-
]
109+
DiagnosticSpec(message: "expected version restriction in availability argument", fixIts: ["insert version restriction"]),
110+
DiagnosticSpec(message: "expected ')' to end availability condition", fixIts: ["insert ')'"]),
111+
],
112+
fixedSource: """
113+
if #unavailable(<#identifier#> ){
114+
}
115+
"""
108116
)
109117
}
110118

@@ -115,8 +123,12 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
115123
}
116124
""",
117125
diagnostics: [
118-
DiagnosticSpec(message: "expected version restriction in availability argument")
119-
]
126+
DiagnosticSpec(message: "expected version restriction in availability argument", fixIts: ["insert version restriction"])
127+
],
128+
fixedSource: """
129+
if #unavailable(<#identifier#>) {
130+
}
131+
"""
120132
)
121133
}
122134

@@ -131,7 +143,8 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
131143
message: "expected ')' to end availability condition",
132144
notes: [
133145
NoteSpec(message: "to match this opening '('")
134-
]
146+
],
147+
fixIts: ["insert ')'"]
135148
)
136149
]
137150
)
@@ -157,9 +170,14 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
157170
message: "expected ')' to end availability condition",
158171
notes: [
159172
NoteSpec(message: "to match this opening '('")
160-
]
173+
],
174+
fixIts: ["insert ')'"]
161175
)
162-
]
176+
],
177+
fixedSource: """
178+
if #unavailable(OSX 10.51) {
179+
}
180+
"""
163181
)
164182
}
165183

@@ -253,8 +271,13 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
253271
}
254272
""",
255273
diagnostics: [
256-
DiagnosticSpec(message: "expected version restriction in availability argument")
257-
]
274+
DiagnosticSpec(message: "expected version restriction in availability argument", fixIts: ["insert version restriction"])
275+
],
276+
fixedSource: """
277+
// Should this be a valid spelling since `#unvailable(*)` cannot be written?
278+
if #unavailable(<#identifier#>) {
279+
}
280+
"""
258281
)
259282
}
260283

@@ -269,9 +292,14 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
269292
message: "expected ')' to end availability condition",
270293
notes: [
271294
NoteSpec(message: "to match this opening '('")
272-
]
295+
],
296+
fixIts: ["insert ')'"]
273297
)
274-
]
298+
],
299+
fixedSource: """
300+
if #unavailable(OSX 10) {
301+
}
302+
"""
275303
)
276304
}
277305

@@ -292,9 +320,13 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
292320
}
293321
""",
294322
diagnostics: [
295-
DiagnosticSpec(message: "expected version restriction in availability argument"),
296-
DiagnosticSpec(message: "expected ')' to end availability condition"),
297-
]
323+
DiagnosticSpec(message: "expected version restriction in availability argument", fixIts: ["insert version restriction"]),
324+
DiagnosticSpec(message: "expected ')' to end availability condition", fixIts: ["insert ')'"]),
325+
],
326+
fixedSource: """
327+
if #unavailable(OSX 10.51,<#identifier#> ){
328+
}
329+
"""
298330
)
299331
}
300332

@@ -305,8 +337,12 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
305337
}
306338
""",
307339
diagnostics: [
308-
DiagnosticSpec(message: "expected version restriction in availability argument")
309-
]
340+
DiagnosticSpec(message: "expected version restriction in availability argument", fixIts: ["insert version restriction"])
341+
],
342+
fixedSource: """
343+
if #unavailable(OSX 10.51,<#identifier#>) {
344+
}
345+
"""
310346
)
311347
}
312348

@@ -321,9 +357,14 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
321357
message: "expected ')' to end availability condition",
322358
notes: [
323359
NoteSpec(message: "to match this opening '('")
324-
]
360+
],
361+
fixIts: ["insert ')'"]
325362
)
326-
]
363+
],
364+
fixedSource: """
365+
if #unavailable(OSX 10.51, iOS) {
366+
}
367+
"""
327368
)
328369
}
329370

@@ -352,8 +393,12 @@ final class AvailabilityQueryUnavailabilityTests: XCTestCase {
352393
}
353394
""",
354395
diagnostics: [
355-
DiagnosticSpec(message: "expected ',' joining platforms in availability condition")
356-
]
396+
DiagnosticSpec(message: "expected ',' joining platforms in availability condition", fixIts: ["replace '||' with ','"])
397+
],
398+
fixedSource: """
399+
if #unavailable(OSX 10.51 , iOS 8.0) {
400+
}
401+
"""
357402
)
358403
}
359404

Tests/SwiftParserTest/translated/DiagnoseDynamicReplacementTests.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,15 @@ final class DiagnoseDynamicReplacementTests: XCTestCase {
6363
message: "expected ')' to end attribute",
6464
notes: [
6565
NoteSpec(message: "to match this opening '('")
66-
]
66+
],
67+
fixIts: ["insert ')'"]
6768
)
68-
]
69+
],
70+
fixedSource: """
71+
@_dynamicReplacement(for: dynamically_replaceable() )
72+
func test_dynamic_replacement_for3() {
73+
}
74+
"""
6975
)
7076
}
71-
7277
}

Tests/SwiftParserTest/translated/UnclosedStringInterpolationTests.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ final class UnclosedStringInterpolationTests: XCTestCase {
2929
_ = "mid == \(pete1️⃣"
3030
"""##,
3131
diagnostics: [
32-
DiagnosticSpec(message: "expected ')' in string literal")
33-
]
32+
DiagnosticSpec(message: "expected ')' in string literal", fixIts: ["insert ')'"])
33+
],
34+
fixedSource: ##"""
35+
_ = "mid == \(pete)"
36+
"""##
3437
)
3538
}
3639

0 commit comments

Comments
 (0)