Skip to content

Commit bb57360

Browse files
committed
fix wrong insert of mesage in UnavailableFromAsyncArgumentsSyntax
1 parent dff8620 commit bb57360

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,6 +1376,36 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
13761376
return .visitChildren
13771377
}
13781378

1379+
public override func visit(_ node: UnavailableFromAsyncArgumentsSyntax) -> SyntaxVisitorContinueKind {
1380+
if shouldSkip(node) {
1381+
return .skipChildren
1382+
}
1383+
1384+
if let token = node.unexpectedBetweenMessageLabelAndColon?.onlyToken(where: { $0.tokenKind.isIdentifier }),
1385+
node.messageLabel.presence == .missing
1386+
{
1387+
addDiagnostic(
1388+
node,
1389+
MissingNodesError(missingNodes: [Syntax(node.messageLabel)]),
1390+
fixIts: [
1391+
FixIt(
1392+
message: ReplaceTokensFixIt(
1393+
replaceTokens: [token],
1394+
replacements: [node.messageLabel]
1395+
),
1396+
changes: [
1397+
FixIt.MultiNodeChange.makeMissing(token),
1398+
FixIt.MultiNodeChange.makePresent(node.messageLabel),
1399+
]
1400+
)
1401+
],
1402+
handledNodes: [node.messageLabel.id, token.id]
1403+
)
1404+
}
1405+
1406+
return .visitChildren
1407+
}
1408+
13791409
public override func visit(_ node: UnresolvedTernaryExprSyntax) -> SyntaxVisitorContinueKind {
13801410
if shouldSkip(node) {
13811411
return .skipChildren

Tests/SwiftParserTest/AttributeTests.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -486,9 +486,12 @@ final class AttributeTests: XCTestCase {
486486
func foo() {}
487487
""",
488488
diagnostics: [
489-
DiagnosticSpec(message: "expected 'message' in @_unavailableFromAsync argument", fixIts: ["insert 'message'"]),
490-
DiagnosticSpec(message: "unexpected code 'nope' before @_unavailableFromAsync argument"),
491-
]
489+
DiagnosticSpec(message: "expected 'message' in @_unavailableFromAsync argument", fixIts: ["replace 'nope' with 'message'"])
490+
],
491+
fixedSource: """
492+
@_unavailableFromAsync(message: "abc")
493+
func foo() {}
494+
"""
492495
)
493496

494497
assertParse(

Tests/SwiftParserTest/translated/OriginalDefinedInAttrTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ final class OriginalDefinedInAttrTests: XCTestCase {
101101
),
102102
],
103103
fixedSource: """
104-
@_originallyDefinedIn(module: "OSX" , <#identifier#>13.13.3)
104+
@_originallyDefinedIn(module: "OSX", <#identifier#> 13.13.3)
105105
public class ToplevelClass2 {}
106106
"""
107107
)

0 commit comments

Comments
 (0)