Skip to content

Commit c9982d6

Browse files
kimdvCippoX
authored andcommitted
Fix wrong fix it for replacing to module for OriginallyDefinedInArgumentsSyntax
1 parent fd9f214 commit c9982d6

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,6 +1009,35 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
10091009
return handleMissingSyntax(node, additionalHandledNodes: [node.placeholder.id])
10101010
}
10111011

1012+
override open func visit(_ node: OriginallyDefinedInArgumentsSyntax) -> SyntaxVisitorContinueKind {
1013+
if shouldSkip(node) {
1014+
return .skipChildren
1015+
}
1016+
if let token = node.unexpectedBetweenModuleLabelAndColon?.onlyToken(where: { $0.tokenKind.isIdentifier }),
1017+
node.moduleLabel.presence == .missing
1018+
{
1019+
addDiagnostic(
1020+
node,
1021+
MissingNodesError(missingNodes: [Syntax(node.moduleLabel)]),
1022+
fixIts: [
1023+
FixIt(
1024+
message: ReplaceTokensFixIt(
1025+
replaceTokens: [token],
1026+
replacements: [node.moduleLabel]
1027+
),
1028+
changes: [
1029+
FixIt.MultiNodeChange.makeMissing(token),
1030+
FixIt.MultiNodeChange.makePresent(node.moduleLabel),
1031+
]
1032+
)
1033+
],
1034+
handledNodes: [node.moduleLabel.id, token.id]
1035+
)
1036+
}
1037+
1038+
return .visitChildren
1039+
}
1040+
10121041
public override func visit(_ node: OperatorDeclSyntax) -> SyntaxVisitorContinueKind {
10131042
if shouldSkip(node) {
10141043
return .skipChildren

Tests/SwiftParserTest/translated/OriginalDefinedInAttrTests.swift

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,15 @@ final class OriginalDefinedInAttrTests: XCTestCase {
3131
public func foo1() {}
3232
"""#,
3333
diagnostics: [
34-
DiagnosticSpec(message: "expected 'module' in @_originallyDefinedIn arguments", fixIts: ["insert 'module'"]),
35-
DiagnosticSpec(message: "unexpected code 'modulename' before @_originallyDefinedIn arguments"),
36-
]
34+
DiagnosticSpec(
35+
message: "expected 'module' in @_originallyDefinedIn arguments",
36+
fixIts: ["replace 'modulename' with 'module'"]
37+
)
38+
],
39+
fixedSource: #"""
40+
@_originallyDefinedIn(module: "foo", OSX 13.13)
41+
public func foo1() {}
42+
"""#
3743
)
3844
}
3945

@@ -53,7 +59,10 @@ final class OriginalDefinedInAttrTests: XCTestCase {
5359
public class ToplevelClass1 {}
5460
"""#,
5561
diagnostics: [
56-
DiagnosticSpec(locationMarker: "1️⃣", message: "expected ',' and version list in @_originallyDefinedIn arguments", fixIts: ["insert ',' and version list"])
62+
DiagnosticSpec(
63+
message: "expected ',' and version list in @_originallyDefinedIn arguments",
64+
fixIts: ["insert ',' and version list"]
65+
)
5766
]
5867
)
5968
}
@@ -200,5 +209,4 @@ final class OriginalDefinedInAttrTests: XCTestCase {
200209
"""
201210
)
202211
}
203-
204212
}

0 commit comments

Comments
 (0)