Skip to content

Commit 46701ae

Browse files
authored
Merge pull request #1549 from kimdv/kimdv/add-assertion-for-missing-fixed-source
2 parents f6b0ca1 + 6261d79 commit 46701ae

File tree

60 files changed

+2926
-654
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

+2926
-654
lines changed

Tests/SwiftParserTest/Assertions.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,9 @@ func assertParse<S: SyntaxProtocol>(
604604
}
605605

606606
// Applying Fix-Its
607-
if let expectedFixedSource = expectedFixedSource {
607+
if expectedDiagnostics.contains(where: { !$0.fixIts.isEmpty }) && expectedFixedSource == nil {
608+
XCTFail("Expected a fixed source if the test case produces diagnostics with Fix-Its", file: file, line: line)
609+
} else if let expectedFixedSource = expectedFixedSource {
608610
let fixedTree = FixItApplier.applyFixes(in: diags, withMessages: applyFixIts, to: tree)
609611
var fixedTreeDescription = fixedTree.description
610612
if options.contains(.normalizeNewlinesInFixedSource) {
@@ -621,6 +623,10 @@ func assertParse<S: SyntaxProtocol>(
621623
)
622624
}
623625

626+
if expectedDiagnostics.allSatisfy({ $0.fixIts.isEmpty }) && expectedFixedSource != nil {
627+
XCTFail("A fixed source was provided but the test case produces no diagnostics with Fix-Its", file: file, line: line)
628+
}
629+
624630
if expectedDiagnostics.isEmpty {
625631
assertBasicFormat(source: source, parse: parse, file: file, line: line)
626632
}

Tests/SwiftParserTest/AttributeTests.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@ 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:) <#declaration#>
69+
"""
6770
)
6871
}
6972

@@ -76,7 +79,10 @@ final class AttributeTests: XCTestCase {
7679
DiagnosticSpec(locationMarker: "1️⃣", message: "expected ':' in attribute argument", fixIts: ["insert ':'"]),
7780
DiagnosticSpec(locationMarker: "2️⃣", message: "expected ': false' in attribute argument", fixIts: ["insert ': false'"]),
7881
DiagnosticSpec(locationMarker: "3️⃣", message: "expected declaration after attribute", fixIts: ["insert declaration"]),
79-
]
82+
],
83+
fixedSource: """
84+
@_specialize(e:, exported: false) <#declaration#>
85+
"""
8086
)
8187
}
8288

@@ -502,7 +508,11 @@ final class AttributeTests: XCTestCase {
502508
diagnostics: [
503509
DiagnosticSpec(message: "expected ':' and string literal in @_unavailableFromAsync argument", fixIts: ["insert ':' and string literal"]),
504510
DiagnosticSpec(message: #"unexpected code '= "abc"' in attribute"#),
505-
]
511+
],
512+
fixedSource: """
513+
@_unavailableFromAsync(message: ""= "abc")
514+
func foo() {}
515+
"""
506516
)
507517

508518
assertParse(

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)