diff --git a/Sources/SourceKitLSP/Swift/DiagnosticReportManager.swift b/Sources/SourceKitLSP/Swift/DiagnosticReportManager.swift index 2ddb8f0fa..1b9e4c299 100644 --- a/Sources/SourceKitLSP/Swift/DiagnosticReportManager.swift +++ b/Sources/SourceKitLSP/Swift/DiagnosticReportManager.swift @@ -110,11 +110,27 @@ actor DiagnosticReportManager { keys.compilerArgs: compilerArgs as [SKDRequestValue], ]) - let dict = try await self.sourcekitd.send( - skreq, - timeout: options.sourcekitdRequestTimeoutOrDefault, - fileContents: snapshot.text - ) + let dict: SKDResponseDictionary + do { + dict = try await self.sourcekitd.send( + skreq, + timeout: options.sourcekitdRequestTimeoutOrDefault, + fileContents: snapshot.text + ) + } catch SKDError.requestFailed(let sourcekitdError) { + var errorMessage = sourcekitdError + if errorMessage.hasPrefix("error response (Request Failed): error: ") { + errorMessage = String(errorMessage.dropFirst(40)) + } + return RelatedFullDocumentDiagnosticReport(items: [ + Diagnostic( + range: Position(line: 0, utf16index: 0)..