Skip to content

Commit d2ad219

Browse files
committed
Fix wrong wrapping of quote tokens around identifiers
1 parent c9e4d07 commit d2ad219

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

Sources/SwiftParser/StringLiterals.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ extension Parser {
487487
// string literal.
488488
guard currentToken.leadingTriviaText.isEmpty else { break }
489489

490-
if let stringSegment = self.consume(if: .stringSegment) {
490+
if let stringSegment = self.consume(if: .stringSegment, .identifier) {
491491
segments.append(.stringSegment(RawStringSegmentSyntax(content: stringSegment, arena: self.arena)))
492492
} else if let backslash = self.consume(if: .backslash) {
493493
let (unexpectedBeforeDelimiter, delimiter) = self.parsePoundDelimiter(.rawStringDelimiter, matching: openDelimiter)

Tests/SwiftParserTest/AttributeTests.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -422,12 +422,19 @@ final class AttributeTests: XCTestCase {
422422

423423
assertParse(
424424
"""
425-
@_expose(Cxx, 1️⃣baz) func foo() {}
425+
@_expose(Cxx, 1️⃣baz2️⃣) func foo() {}
426426
""",
427427
diagnostics: [
428-
DiagnosticSpec(message: "expected string literal to end @_expose arguments", fixIts: ["insert string literal"]),
429-
DiagnosticSpec(message: "unexpected code 'baz' in attribute"),
430-
]
428+
DiagnosticSpec(locationMarker: "1️⃣",
429+
message: #"expected '"' in string literal"#,
430+
fixIts: [#"insert '"'"#]),
431+
DiagnosticSpec(locationMarker: "2️⃣",
432+
message: #"expected '"' to end string literal"#,
433+
fixIts: [#"insert '"'"#]),
434+
],
435+
fixedSource:"""
436+
@_expose(Cxx, "baz") func foo() {}
437+
"""
431438
)
432439
}
433440

0 commit comments

Comments
 (0)