From 39a13b0194bb8b8372b398f8c09bbe829184a2f7 Mon Sep 17 00:00:00 2001 From: Tomasz Godzik Date: Tue, 11 Mar 2025 18:35:31 +0100 Subject: [PATCH] improvement: Forward all LSP data from BSP --- .../meta/internal/metals/Diagnostics.scala | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/metals/src/main/scala/scala/meta/internal/metals/Diagnostics.scala b/metals/src/main/scala/scala/meta/internal/metals/Diagnostics.scala index 5a1f0e1a12d..c3ede4bf42b 100644 --- a/metals/src/main/scala/scala/meta/internal/metals/Diagnostics.scala +++ b/metals/src/main/scala/scala/meta/internal/metals/Diagnostics.scala @@ -69,7 +69,7 @@ final class Diagnostics( def reset(): Unit = { val keys = diagnostics.keys diagnostics.clear() - keys.foreach { key => publishDiagnostics(key) } + keys.foreach { desc => publishDiagnostics(desc) } } def reset(paths: Seq[AbsolutePath]): Unit = @@ -323,23 +323,18 @@ final class Diagnostics( adjustWithinToken = shouldAdjustWithinToken(d), ) .map { range => - val ld = new l.Diagnostic( - range, - d.getMessage, - d.getSeverity, - d.getSource, - ) + d.setRange(range) // Scala 3 sets the diagnostic code to -1 for NoExplanation Messages. Ideally // this will change and we won't need this check in the future, but for now - // let's not forward them. + // let's not forward them, since they are not valid for all clients. val isScala3NoExplanationDiag = d.getCode() != null && d .getCode() .isLeft() && d.getCode().getLeft() == "-1" - if (!isScala3NoExplanationDiag) ld.setCode(d.getCode()) - - ld.setTags(d.getTags()) - adjustedDiagnosticData(d, edit).map(newData => ld.setData(newData)) - ld + if (isScala3NoExplanationDiag) { + d.setCode(null: l.jsonrpc.messages.Either[String, Integer]) + } + adjustedDiagnosticData(d, edit).map(newData => d.setData(newData)) + d } if (result.isEmpty) { d.getRange.toMeta(snapshot).foreach { pos =>