Skip to content

Commit 819c718

Browse files
committed
Add assertion for missing fixed source
1 parent 7650238 commit 819c718

File tree

60 files changed

+2818
-576
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+2818
-576
lines changed

Tests/SwiftParserTest/Assertions.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,9 @@ func assertParse<S: SyntaxProtocol>(
608608
}
609609

610610
// Applying Fix-Its
611-
if let expectedFixedSource = expectedFixedSource {
611+
if diags.contains(where: { !$0.fixIts.isEmpty }) && expectedFixedSource == nil {
612+
XCTFail("Expected a fixed source", file: file, line: line)
613+
} else if let expectedFixedSource = expectedFixedSource {
612614
let fixedTree = FixItApplier.applyFixes(in: diags, withMessages: applyFixIts, to: tree)
613615
var fixedTreeDescription = fixedTree.description
614616
if options.contains(.normalizeNewlinesInFixedSource) {

Tests/SwiftParserTest/AttributeTests.swift

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ final class AttributeTests: XCTestCase {
6363
DiagnosticSpec(message: "expected ':' in attribute argument", fixIts: ["insert ':'"]),
6464
DiagnosticSpec(message: "expected ')' to end attribute", fixIts: ["insert ')'"]),
6565
DiagnosticSpec(message: "expected declaration after attribute", fixIts: ["insert declaration"]),
66-
]
66+
],
67+
fixedSource: """
68+
@_specialize(e
69+
<#declaration#>
70+
"""
6771
)
6872
}
6973

@@ -76,7 +80,11 @@ final class AttributeTests: XCTestCase {
7680
DiagnosticSpec(locationMarker: "1️⃣", message: "expected ':' in attribute argument", fixIts: ["insert ':'"]),
7781
DiagnosticSpec(locationMarker: "2️⃣", message: "expected ': false' in attribute argument", fixIts: ["insert ': false'"]),
7882
DiagnosticSpec(locationMarker: "3️⃣", message: "expected declaration after attribute", fixIts: ["insert declaration"]),
79-
]
83+
],
84+
fixedSource: """
85+
@_specialize(e, exported)
86+
<#declaration#>
87+
"""
8088
)
8189
}
8290

@@ -428,7 +436,10 @@ final class AttributeTests: XCTestCase {
428436
diagnostics: [
429437
DiagnosticSpec(message: "expected string literal to end @_expose arguments", fixIts: ["insert string literal"]),
430438
DiagnosticSpec(message: "unexpected code 'baz' in attribute"),
431-
]
439+
],
440+
fixedSource: """
441+
@_expose(Cxx, ""baz) func foo() {}
442+
"""
432443
)
433444
}
434445

@@ -478,7 +489,11 @@ final class AttributeTests: XCTestCase {
478489
diagnostics: [
479490
DiagnosticSpec(message: "expected 'message' in @_unavailableFromAsync argument", fixIts: ["insert 'message'"]),
480491
DiagnosticSpec(message: "unexpected code 'nope' before @_unavailableFromAsync argument"),
481-
]
492+
],
493+
fixedSource: """
494+
@_unavailableFromAsync(messagenope: "abc")
495+
func foo() {}
496+
"""
482497
)
483498

484499
assertParse(
@@ -489,7 +504,11 @@ final class AttributeTests: XCTestCase {
489504
diagnostics: [
490505
DiagnosticSpec(message: "expected ':' and string literal in @_unavailableFromAsync argument", fixIts: ["insert ':' and string literal"]),
491506
DiagnosticSpec(message: #"unexpected code '= "abc"' in attribute"#),
492-
]
507+
],
508+
fixedSource: """
509+
@_unavailableFromAsync(message: ""= "abc")
510+
func foo() {}
511+
"""
493512
)
494513

495514
assertParse(
@@ -500,7 +519,11 @@ final class AttributeTests: XCTestCase {
500519
diagnostics: [
501520
DiagnosticSpec(message: "expected string literal to end @_unavailableFromAsync argument", fixIts: ["insert string literal"]),
502521
DiagnosticSpec(message: "unexpected code 'abc' in attribute"),
503-
]
522+
],
523+
fixedSource: """
524+
@_unavailableFromAsync(message: ""abc)
525+
func foo() {}
526+
"""
504527
)
505528
}
506529

Tests/SwiftParserTest/AvailabilityTests.swift

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,11 @@ final class AvailabilityTests: XCTestCase {
151151
diagnostics: [
152152
DiagnosticSpec(message: "expected version tuple in version restriction", fixIts: ["insert version tuple"]),
153153
DiagnosticSpec(message: "unexpected code '10e10' in attribute"),
154-
]
154+
],
155+
fixedSource: """
156+
@available(OSX <#integer literal#>10e10)
157+
func test() {}
158+
"""
155159
)
156160

157161
assertParse(
@@ -162,7 +166,11 @@ final class AvailabilityTests: XCTestCase {
162166
diagnostics: [
163167
DiagnosticSpec(message: "expected integer literal in version tuple", fixIts: ["insert integer literal"]),
164168
DiagnosticSpec(message: "unexpected code '0e10' in attribute"),
165-
]
169+
],
170+
fixedSource: """
171+
@available(OSX 10.<#integer literal#>0e10)
172+
func test() {}
173+
"""
166174
)
167175

168176
assertParse(
@@ -173,7 +181,11 @@ final class AvailabilityTests: XCTestCase {
173181
diagnostics: [
174182
DiagnosticSpec(message: "expected version tuple in version restriction", fixIts: ["insert version tuple"]),
175183
DiagnosticSpec(message: "unexpected code '0xff' in attribute"),
176-
]
184+
],
185+
fixedSource: """
186+
@available(OSX <#integer literal#>0xff)
187+
func test() {}
188+
"""
177189
)
178190

179191
assertParse(
@@ -184,8 +196,11 @@ final class AvailabilityTests: XCTestCase {
184196
diagnostics: [
185197
DiagnosticSpec(message: "expected integer literal in version tuple", fixIts: ["insert integer literal"]),
186198
DiagnosticSpec(message: "unexpected code '0xff' in attribute"),
187-
]
199+
],
200+
fixedSource: """
201+
@available(OSX 1.0.<#integer literal#>0xff)
202+
func test() {}
203+
"""
188204
)
189-
190205
}
191206
}

0 commit comments

Comments
 (0)