Skip to content

Commit ae04934

Browse files
authored
Merge pull request #674 from ahoppen/ahoppen/server-cancelled
Return a .serverCancelled error code if the server cancels a request
2 parents 14ea6f6 + ca45a7a commit ae04934

File tree

9 files changed

+14
-12
lines changed

9 files changed

+14
-12
lines changed

Sources/LanguageServerProtocol/Connection.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ extension LocalConnection: Connection {
110110
public func send<Request>(_ request: Request, queue: DispatchQueue, reply: @escaping (LSPResult<Request.Response>) -> Void) -> RequestID where Request: RequestType {
111111
let id = nextRequestID()
112112
guard let handler = handler else {
113-
queue.async { reply(.failure(.cancelled)) }
113+
queue.async { reply(.failure(.serverCancelled)) }
114114
return id
115115
}
116116

Sources/LanguageServerProtocol/Error.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ public struct ResponseError: Error, Codable, Hashable {
101101
extension ResponseError {
102102
// MARK: Convencience properties for common errors.
103103

104-
public static var cancelled: ResponseError = ResponseError(code: .cancelled, message: "request cancelled")
104+
public static var cancelled: ResponseError = ResponseError(code: .cancelled, message: "request cancelled by client")
105+
106+
public static var serverCancelled: ResponseError = ResponseError(code: .serverCancelled, message: "request cancelled by server")
105107

106108
public static func workspaceNotOpen(_ uri: DocumentURI) -> ResponseError {
107109
return ResponseError(code: .workspaceNotOpen, message: "No workspace containing '\(uri)' found")

Sources/LanguageServerProtocolJSONRPC/JSONRPCConnection.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ extension JSONRPCConnection: Connection {
404404
let id = nextRequestID()
405405

406406
guard readyToSend() else {
407-
reply(.failure(.cancelled))
407+
reply(.failure(.serverCancelled))
408408
return id
409409
}
410410

Sources/SourceKitLSP/Swift/CodeCompletion.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ extension SwiftLanguageServer {
6060
if req.params.context?.triggerKind == .triggerFromIncompleteCompletions {
6161
guard let currentSession = currentCompletionSession else {
6262
log("triggerFromIncompleteCompletions with no existing completion session", level: .warning)
63-
return req.reply(.failure(.cancelled))
63+
return req.reply(.failure(.serverCancelled))
6464
}
6565
guard currentSession.uri == snapshot.document.uri, currentSession.utf8StartOffset == offset else {
6666
log("triggerFromIncompleteCompletions with incompatible completion session; expected \(currentSession.uri)@\(currentSession.utf8StartOffset), but got \(snapshot.document.uri)@\(offset)", level: .warning)
67-
return req.reply(.failure(.cancelled))
67+
return req.reply(.failure(.serverCancelled))
6868
}
6969
session = currentSession
7070
} else {

Sources/SourceKitLSP/Swift/CodeCompletionSession.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class CodeCompletionSession {
8585
switch self.state {
8686
case .closed, .opening(_):
8787
// Don't try again.
88-
completion(.failure(.cancelled))
88+
completion(.failure(.serverCancelled))
8989
case .open:
9090
self._update(filterText: filterText, position: position, in: snapshot, options: options, completion: completion)
9191
}
@@ -134,7 +134,7 @@ class CodeCompletionSession {
134134
return completion(.failure(ResponseError(result.failure!)))
135135
}
136136
if case .closed = self.state {
137-
return completion(.failure(.cancelled))
137+
return completion(.failure(.serverCancelled))
138138
}
139139

140140
self.state = .open

Sources/SourceKitLSP/Swift/SourceKitD+ResponseError.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ extension ResponseError {
1717
public init(_ value: SKDError) {
1818
switch value {
1919
case .requestCancelled:
20-
self = .cancelled
20+
self = .serverCancelled
2121
case .requestFailed(let desc):
2222
self = .unknown("sourcekitd request failed: \(desc)")
2323
case .requestInvalid(let desc):

Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ extension SwiftLanguageServer {
584584
let position = req.params.position
585585
cursorInfo(uri, position..<position) { result in
586586
guard let cursorInfo: CursorInfo = result.success ?? nil else {
587-
if let error = result.failure, error != .responseError(.cancelled) {
587+
if let error = result.failure, error != .responseError(.serverCancelled) {
588588
log("cursor info failed \(uri):\(position): \(error)", level: .warning)
589589
}
590590
return req.reply(nil)

Tests/LanguageServerProtocolJSONRPCTests/CodingTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ final class CodingTests: XCTestCase {
110110
{
111111
"error" : {
112112
"code" : -32800,
113-
"message" : "request cancelled"
113+
"message" : "request cancelled by client"
114114
},
115115
"id" : 2,
116116
"jsonrpc" : "2.0"
@@ -132,7 +132,7 @@ final class CodingTests: XCTestCase {
132132
{
133133
"error" : {
134134
"code" : -32800,
135-
"message" : "request cancelled"
135+
"message" : "request cancelled by client"
136136
},
137137
"id" : null,
138138
"jsonrpc" : "2.0"

Tests/LanguageServerProtocolJSONRPCTests/ConnectionTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ class ConnectionTests: XCTestCase {
189189

190190
client.send(EchoNotification(string: "hi"))
191191
_ = client.send(EchoRequest(string: "yo")) { result in
192-
XCTAssertEqual(result, .failure(ResponseError.cancelled))
192+
XCTAssertEqual(result, .failure(ResponseError.serverCancelled))
193193
expectation.fulfill()
194194
}
195195

0 commit comments

Comments
 (0)