about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-06-01 14:31:14 +0000
committerbors <bors@rust-lang.org>2022-06-01 14:31:14 +0000
commitcf10a1ee3e7474e67683da20502f897eebcbbbc4 (patch)
tree82f2ff982985427a3f08b17152ef925f12aeed39
parent4f5c7aafffa5a424302275677da39f666f498d3e (diff)
parentbad931116ef40e237185c0b57ab4d6f138a4aad2 (diff)
downloadrust-cf10a1ee3e7474e67683da20502f897eebcbbbc4.tar.gz
rust-cf10a1ee3e7474e67683da20502f897eebcbbbc4.zip
Auto merge of #12440 - Maan2003:empty-msg-diag, r=jonas-schievink
fix(diagnostic): Don't remove diagnostic with empty message

Use " " as message if it is empty

[discussion on zulip](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/empty.20diagnostic.20message)

![image](https://user-images.githubusercontent.com/49202620/171412661-9b9575e9-e71b-4b84-a5c0-00271548d50c.png)
-rw-r--r--crates/rust-analyzer/src/diagnostics/to_proto.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs
index aac8e9222d3..8f779df18d3 100644
--- a/crates/rust-analyzer/src/diagnostics/to_proto.rs
+++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs
@@ -462,9 +462,10 @@ pub(crate) fn map_rust_diagnostic_to_lsp(
                 message: "original diagnostic".to_string(),
             };
             for sub in &subdiagnostics {
-                // Filter out empty/non-existent messages, as they greatly confuse VS Code.
-                if sub.related.message.is_empty() {
-                    continue;
+                let mut message = sub.related.message.clone();
+                // Change empty message to " ", as they greatly confuse VS Code.
+                if message.is_empty() {
+                    message = String::from(" ");
                 }
                 diagnostics.push(MappedRustDiagnostic {
                     url: sub.related.location.uri.clone(),
@@ -475,7 +476,7 @@ pub(crate) fn map_rust_diagnostic_to_lsp(
                         code: code.clone().map(lsp_types::NumberOrString::String),
                         code_description: code_description.clone(),
                         source: Some(source.clone()),
-                        message: sub.related.message.clone(),
+                        message,
                         related_information: Some(vec![back_ref.clone()]),
                         tags: None, // don't apply modifiers again
                         data: None,