]> git.lizzy.rs Git - rust.git/blobdiff - crates/rust-analyzer/src/diagnostics.rs
Replaced fold with for loop
[rust.git] / crates / rust-analyzer / src / diagnostics.rs
index f01548c50a8af7cc90f90f1a555992a41ff67a81..56b3afce98a33a3fc04b6301363f8ec6c2c1ea73 100644 (file)
@@ -12,6 +12,7 @@
 
 #[derive(Debug, Default, Clone)]
 pub struct DiagnosticsMapConfig {
+    pub remap_prefix: FxHashMap<String, String>,
     pub warnings_as_info: Vec<String>,
     pub warnings_as_hint: Vec<String>,
 }
@@ -28,7 +29,8 @@ pub(crate) struct DiagnosticCollection {
 
 #[derive(Debug, Clone)]
 pub(crate) struct Fix {
-    pub(crate) range: lsp_types::Range,
+    // Fixes may be triggerable from multiple ranges.
+    pub(crate) ranges: Vec<lsp_types::Range>,
     pub(crate) action: lsp_ext::CodeAction,
 }
 
@@ -42,20 +44,17 @@ pub(crate) fn add_check_diagnostic(
         &mut self,
         file_id: FileId,
         diagnostic: lsp_types::Diagnostic,
-        fixes: Vec<lsp_ext::CodeAction>,
+        fix: Option<Fix>,
     ) {
         let diagnostics = self.check.entry(file_id).or_default();
         for existing_diagnostic in diagnostics.iter() {
-            if are_diagnostics_equal(&existing_diagnostic, &diagnostic) {
+            if are_diagnostics_equal(existing_diagnostic, &diagnostic) {
                 return;
             }
         }
 
         let check_fixes = Arc::make_mut(&mut self.check_fixes);
-        check_fixes
-            .entry(file_id)
-            .or_default()
-            .extend(fixes.into_iter().map(|action| Fix { range: diagnostic.range, action }));
+        check_fixes.entry(file_id).or_default().extend(fix);
         diagnostics.push(diagnostic);
         self.changes.insert(file_id);
     }