From bd4d7551a5157f44b580b2493ef018f1bc72650e Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Fri, 3 Mar 2023 16:35:12 -0800 Subject: [PATCH] Make diagnostic processing order independent Co-authored-by: max --- crates/project/src/project.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 0325d07ce6..0ec2d92d57 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -2557,7 +2557,7 @@ impl Project { pub fn update_diagnostics( &mut self, language_server_id: usize, - params: lsp::PublishDiagnosticsParams, + mut params: lsp::PublishDiagnosticsParams, disk_based_sources: &[String], cx: &mut ModelContext, ) -> Result<()> { @@ -2569,6 +2569,10 @@ impl Project { let mut primary_diagnostic_group_ids = HashMap::default(); let mut sources_by_group_id = HashMap::default(); let mut supporting_diagnostics = HashMap::default(); + + // Ensure that primary diagnostics are always the most severe + params.diagnostics.sort_by_key(|item| item.severity); + for diagnostic in ¶ms.diagnostics { let source = diagnostic.source.as_ref(); let code = diagnostic.code.as_ref().map(|code| match code {