diff --git a/Sources/SKSupport/LineTable.swift b/Sources/SKSupport/LineTable.swift index e13488a4..9c57866d 100644 --- a/Sources/SKSupport/LineTable.swift +++ b/Sources/SKSupport/LineTable.swift @@ -11,6 +11,7 @@ //===----------------------------------------------------------------------===// import LSPLogging + #if canImport(os) import os #endif diff --git a/Sources/SourceKitLSP/Swift/CodeActions/ConvertStringConcatenationToStringInterpolation.swift b/Sources/SourceKitLSP/Swift/CodeActions/ConvertStringConcatenationToStringInterpolation.swift index f96201bb..82ad91ef 100644 --- a/Sources/SourceKitLSP/Swift/CodeActions/ConvertStringConcatenationToStringInterpolation.swift +++ b/Sources/SourceKitLSP/Swift/CodeActions/ConvertStringConcatenationToStringInterpolation.swift @@ -56,11 +56,13 @@ struct ConvertStringConcatenationToStringInterpolation: SyntaxRefactoringProvide [ ExprSyntax( StringLiteralExprSyntax( + leadingTrivia: syntax.leadingTrivia, openingPounds: commonPounds, openingQuote: .stringQuoteToken(), segments: segments, closingQuote: .stringQuoteToken(), - closingPounds: commonPounds + closingPounds: commonPounds, + trailingTrivia: componentsOnly.last?.kind == .stringLiteralExpr ? syntax.trailingTrivia : nil ) ) ] diff --git a/Tests/SourceKitLSPTests/CodeActionTests.swift b/Tests/SourceKitLSPTests/CodeActionTests.swift index b6d7acb6..d359348a 100644 --- a/Tests/SourceKitLSPTests/CodeActionTests.swift +++ b/Tests/SourceKitLSPTests/CodeActionTests.swift @@ -1009,8 +1009,10 @@ final class CodeActionTests: XCTestCase { func testConvertStringConcatenationToStringInterpolation() async throws { try await assertCodeActions( #""" - 1️⃣#"["# + 2️⃣key + ": \(3️⃣d) " + 4️⃣value + ##"]"##5️⃣ + 0️⃣ + 1️⃣/*leading*/ #"["# + 2️⃣key + ": \(3️⃣d) " + 4️⃣value + ##"]"## /*trailing*/5️⃣ """#, + markers: ["1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣"], ranges: [("1️⃣", "2️⃣"), ("3️⃣", "4️⃣"), ("1️⃣", "5️⃣")], exhaustive: false ) { uri, positions in @@ -1022,9 +1024,10 @@ final class CodeActionTests: XCTestCase { changes: [ uri: [ TextEdit( - range: positions["1️⃣"]..