Skip to content

Commit 3274349

Browse files
authored
Merge pull request #2251 from xedin/throwing-refactoring-actions
[SwiftLanguageService] Adopt to throwing refactoring actions
2 parents 65a3402 + 28ec028 commit 3274349

File tree

4 files changed

+8
-6
lines changed

4 files changed

+8
-6
lines changed

Sources/SwiftLanguageService/CodeActions/ConvertStringConcatenationToStringInterpolation.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import SwiftSyntax
1717
/// ConvertStringConcatenationToStringInterpolation is a code action that converts a valid string concatenation into a
1818
/// string interpolation.
1919
struct ConvertStringConcatenationToStringInterpolation: SyntaxRefactoringProvider {
20-
static func refactor(syntax: SequenceExprSyntax, in context: Void) -> SequenceExprSyntax? {
20+
static func refactor(syntax: SequenceExprSyntax, in context: Void) throws -> SequenceExprSyntax {
2121
guard let (componentsOnly, commonPounds) = preflight(exprList: syntax.elements) else {
22-
return nil
22+
throw RefactoringNotApplicableError("unsupported expression")
2323
}
2424

2525
var segments: StringLiteralSegmentListSyntax = []

Sources/SwiftLanguageService/CodeActions/SyntaxRefactoringCodeActionProvider.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ extension SyntaxRefactoringCodeActionProvider where Self.Context == Void {
3333
return []
3434
}
3535

36-
let sourceEdits = Self.textRefactor(syntax: node)
36+
guard let sourceEdits = try? Self.textRefactor(syntax: node) else {
37+
return []
38+
}
3739

3840
let textEdits = sourceEdits.compactMap { (edit) -> TextEdit? in
3941
let edit = TextEdit(

Sources/SwiftLanguageService/CodeCompletionSession.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ class CodeCompletionSession {
412412
var parser = Parser(exprToExpand)
413413
let expr = ExprSyntax.parse(from: &parser)
414414
guard let call = OutermostFunctionCallFinder.findOutermostFunctionCall(in: expr),
415-
let expandedCall = ExpandEditorPlaceholdersToLiteralClosures.refactor(
415+
let expandedCall = try? ExpandEditorPlaceholdersToLiteralClosures.refactor(
416416
syntax: Syntax(call),
417417
in: ExpandEditorPlaceholdersToLiteralClosures.Context(
418418
format: .custom(

Tests/SourceKitLSPTests/SyntaxRefactorTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,8 @@ func assertRefactor<R: EditRefactoringProvider>(
278278
file: StaticString = #filePath,
279279
line: UInt = #line
280280
) throws {
281-
let edits = R.textRefactor(syntax: input, in: context)
282-
guard !edits.isEmpty else {
281+
let edits = try? R.textRefactor(syntax: input, in: context)
282+
guard let edits, !edits.isEmpty else {
283283
if !expected.isEmpty {
284284
XCTFail(
285285
"""

0 commit comments

Comments
 (0)