Files
sourcekit-lsp/Sources/SourceKitLSP/Swift/SourceKitD+ResponseError.swift
Alex Hoppen 3d17caded6 Implement request cancellation
When receiving a `CancellationNotification`, we cancel the task that handles the request with that ID.

This will cause `cancel_notification` to be sent to sourcekitd or a `CancellationNotification` to be sent to `clangd`, which ultimately cancels the request.

rdar://117492860
2023-10-26 11:03:15 -07:00

32 lines
1.1 KiB
Swift

//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import LanguageServerProtocol
import SourceKitD
extension ResponseError {
public init(_ value: SKDError) {
switch value {
case .requestCancelled:
self = .cancelled
case .requestFailed(let desc):
self = .unknown("sourcekitd request failed: \(desc)")
case .requestInvalid(let desc):
self = .unknown("sourcekitd invalid request \(desc)")
case .missingRequiredSymbol(let desc):
self = .unknown("sourcekitd missing required symbol '\(desc)'")
case .connectionInterrupted:
self = .unknown("sourcekitd connection interrupted")
}
}
}