Skip to content

Commit 6d2709d

Browse files
committed
Remove the fallback value from SourceKitServer.handleRequest
It’s not entire clear why we have a fallback value if no document service can serve a request and I checked that VS Code behaves if we return empty results for jump to definition or if we return an error. To simplify the codebase, we should just throw an error here and remove the `fallback` parameter from `handleRequest`. Resolves #862 rdar://116703662
1 parent d043dc0 commit 6d2709d

File tree

1 file changed

+23
-32
lines changed

1 file changed

+23
-32
lines changed

Sources/SourceKitLSP/SourceKitServer.swift

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -395,16 +395,15 @@ public actor SourceKitServer {
395395

396396
private func handleRequest<RequestType: TextDocumentRequest>(
397397
for request: Request<RequestType>,
398-
requestHandler: @escaping (RequestType, Workspace, ToolchainLanguageServer) async throws -> RequestType.Response,
399-
fallback: RequestType.Response
398+
requestHandler: @escaping (RequestType, Workspace, ToolchainLanguageServer) async throws -> RequestType.Response
400399
) async {
401400
await handleRequest(request) { request in
402401
let doc = request.textDocument.uri
403402
guard let workspace = await self.workspaceForDocument(uri: request.textDocument.uri) else {
404403
throw ResponseError.workspaceNotOpen(request.textDocument.uri)
405404
}
406405
guard let languageService = workspace.documentService[doc] else {
407-
return fallback
406+
throw ResponseError.unknown("No language service for '\(request.textDocument.uri)' found")
408407
}
409408
return try await requestHandler(request, workspace, languageService)
410409
}
@@ -747,55 +746,47 @@ extension SourceKitServer: MessageHandler {
747746
case let request as Request<TypeHierarchySubtypesRequest>:
748747
await self.handleRequest(request, handler: self.subtypes)
749748
case let request as Request<CompletionRequest>:
750-
await self.handleRequest(
751-
for: request,
752-
requestHandler: self.completion,
753-
fallback: CompletionList(isIncomplete: false, items: [])
754-
)
749+
await self.handleRequest(for: request, requestHandler: self.completion)
755750
case let request as Request<HoverRequest>:
756-
await self.handleRequest(for: request, requestHandler: self.hover, fallback: nil)
751+
await self.handleRequest(for: request, requestHandler: self.hover)
757752
case let request as Request<OpenInterfaceRequest>:
758-
await self.handleRequest(for: request, requestHandler: self.openInterface, fallback: nil)
753+
await self.handleRequest(for: request, requestHandler: self.openInterface)
759754
case let request as Request<DeclarationRequest>:
760-
await self.handleRequest(for: request, requestHandler: self.declaration, fallback: nil)
755+
await self.handleRequest(for: request, requestHandler: self.declaration)
761756
case let request as Request<DefinitionRequest>:
762-
await self.handleRequest(for: request, requestHandler: self.definition, fallback: .locations([]))
757+
await self.handleRequest(for: request, requestHandler: self.definition)
763758
case let request as Request<ReferencesRequest>:
764-
await self.handleRequest(for: request, requestHandler: self.references, fallback: [])
759+
await self.handleRequest(for: request, requestHandler: self.references)
765760
case let request as Request<ImplementationRequest>:
766-
await self.handleRequest(for: request, requestHandler: self.implementation, fallback: .locations([]))
761+
await self.handleRequest(for: request, requestHandler: self.implementation)
767762
case let request as Request<CallHierarchyPrepareRequest>:
768-
await self.handleRequest(for: request, requestHandler: self.prepareCallHierarchy, fallback: [])
763+
await self.handleRequest(for: request, requestHandler: self.prepareCallHierarchy)
769764
case let request as Request<TypeHierarchyPrepareRequest>:
770-
await self.handleRequest(for: request, requestHandler: self.prepareTypeHierarchy, fallback: [])
765+
await self.handleRequest(for: request, requestHandler: self.prepareTypeHierarchy)
771766
case let request as Request<SymbolInfoRequest>:
772-
await self.handleRequest(for: request, requestHandler: self.symbolInfo, fallback: [])
767+
await self.handleRequest(for: request, requestHandler: self.symbolInfo)
773768
case let request as Request<DocumentHighlightRequest>:
774-
await self.handleRequest(for: request, requestHandler: self.documentSymbolHighlight, fallback: nil)
769+
await self.handleRequest(for: request, requestHandler: self.documentSymbolHighlight)
775770
case let request as Request<FoldingRangeRequest>:
776-
await self.handleRequest(for: request, requestHandler: self.foldingRange, fallback: nil)
771+
await self.handleRequest(for: request, requestHandler: self.foldingRange)
777772
case let request as Request<DocumentSymbolRequest>:
778-
await self.handleRequest(for: request, requestHandler: self.documentSymbol, fallback: nil)
773+
await self.handleRequest(for: request, requestHandler: self.documentSymbol)
779774
case let request as Request<DocumentColorRequest>:
780-
await self.handleRequest(for: request, requestHandler: self.documentColor, fallback: [])
775+
await self.handleRequest(for: request, requestHandler: self.documentColor)
781776
case let request as Request<DocumentSemanticTokensRequest>:
782-
await self.handleRequest(for: request, requestHandler: self.documentSemanticTokens, fallback: nil)
777+
await self.handleRequest(for: request, requestHandler: self.documentSemanticTokens)
783778
case let request as Request<DocumentSemanticTokensDeltaRequest>:
784-
await self.handleRequest(for: request, requestHandler: self.documentSemanticTokensDelta, fallback: nil)
779+
await self.handleRequest(for: request, requestHandler: self.documentSemanticTokensDelta)
785780
case let request as Request<DocumentSemanticTokensRangeRequest>:
786-
await self.handleRequest(for: request, requestHandler: self.documentSemanticTokensRange, fallback: nil)
781+
await self.handleRequest(for: request, requestHandler: self.documentSemanticTokensRange)
787782
case let request as Request<ColorPresentationRequest>:
788-
await self.handleRequest(for: request, requestHandler: self.colorPresentation, fallback: [])
783+
await self.handleRequest(for: request, requestHandler: self.colorPresentation)
789784
case let request as Request<CodeActionRequest>:
790-
await self.handleRequest(for: request, requestHandler: self.codeAction, fallback: nil)
785+
await self.handleRequest(for: request, requestHandler: self.codeAction)
791786
case let request as Request<InlayHintRequest>:
792-
await self.handleRequest(for: request, requestHandler: self.inlayHint, fallback: [])
787+
await self.handleRequest(for: request, requestHandler: self.inlayHint)
793788
case let request as Request<DocumentDiagnosticsRequest>:
794-
await self.handleRequest(
795-
for: request,
796-
requestHandler: self.documentDiagnostic,
797-
fallback: .full(.init(items: []))
798-
)
789+
await self.handleRequest(for: request, requestHandler: self.documentDiagnostic)
799790
// IMPORTANT: When adding a new entry to this switch, also add it to the `TaskMetadata` initializer.
800791
default:
801792
reply(.failure(ResponseError.methodNotFound(R.method)))

0 commit comments

Comments
 (0)