From cb97b7cd1d766fafb1775ebaae73511f358b420a Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 10 Dec 2021 09:43:21 +0100 Subject: [PATCH] Fix diagnostic unit test --- crates/language/src/buffer.rs | 8 +++----- crates/language/src/diagnostic_set.rs | 20 +++++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/crates/language/src/buffer.rs b/crates/language/src/buffer.rs index d34528c78409df2a63c652f5d294b7759445ff70..d1beff9dd5072c94f2f5026646abf3d7f8472df7 100644 --- a/crates/language/src/buffer.rs +++ b/crates/language/src/buffer.rs @@ -23,7 +23,6 @@ use std::{ ffi::OsString, future::Future, iter::{Iterator, Peekable}, - mem, ops::{Deref, DerefMut, Range}, path::{Path, PathBuf}, str, @@ -794,8 +793,7 @@ impl Buffer { } drop(edits_since_save); - let mut diagnostics = mem::take(&mut self.diagnostics); - diagnostics.reset( + let new_diagnostics = DiagnosticSet::new( diagnostics_by_group_id .into_values() .flat_map(|mut diagnostics| { @@ -806,9 +804,9 @@ impl Buffer { primary.diagnostic.is_primary = true; diagnostics }), - self, + content, ); - self.diagnostics = diagnostics; + self.diagnostics = new_diagnostics; if let Some(version) = version { let language_server = self.language_server.as_mut().unwrap(); diff --git a/crates/language/src/diagnostic_set.rs b/crates/language/src/diagnostic_set.rs index 0a04ef17e88cab5d74548b4ca3af5c1e3310de58..b67a2fe835597e543c99409943439ae34f07194f 100644 --- a/crates/language/src/diagnostic_set.rs +++ b/crates/language/src/diagnostic_set.rs @@ -37,20 +37,22 @@ impl DiagnosticSet { } } - pub fn reset(&mut self, iter: I, buffer: &text::Snapshot) + pub fn new(iter: I, buffer: &text::Snapshot) -> Self where I: IntoIterator>, { let mut entries = iter.into_iter().collect::>(); entries.sort_unstable_by_key(|entry| (entry.range.start, Reverse(entry.range.end))); - self.diagnostics = SumTree::from_iter( - entries.into_iter().map(|entry| DiagnosticEntry { - range: buffer.anchor_before(entry.range.start) - ..buffer.anchor_after(entry.range.end), - diagnostic: entry.diagnostic, - }), - buffer, - ); + Self { + diagnostics: SumTree::from_iter( + entries.into_iter().map(|entry| DiagnosticEntry { + range: buffer.anchor_before(entry.range.start) + ..buffer.anchor_after(entry.range.end), + diagnostic: entry.diagnostic, + }), + buffer, + ), + } } pub fn iter(&self) -> impl Iterator> {