From 47b1d610a9e7f0e89b2f7c6e602ba21118ab1320 Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Fri, 12 Jan 2024 17:22:01 -0800 Subject: [PATCH] Never return error for diagnostics request VS Code does not request diagnostics again for a document if the diagnostics request failed. Since sourcekit-lsp usually recovers from failures (e.g. after sourcekitd crashes), this is undesirable. Instead of returning an error, return empty results. --- Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift b/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift index 900fd525f..26cf6b645 100644 --- a/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift +++ b/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift @@ -1476,9 +1476,10 @@ extension SwiftLanguageServer { req.reply(.full(.init(items: diagnostics))) case .failure(let error): - let message = "document diagnostic failed \(uri): \(error)" - log(message, level: .warning) - return req.reply(.failure(.unknown(message))) + // VS Code does not request diagnostics again for a document if the diagnostics request failed. + // Since sourcekit-lsp usually recovers from failures (e.g. after sourcekitd crashes), this is undesirable. + // Instead of returning an error, return empty results. + return req.reply(.full(.init(items: []))) } } }