about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs
index 16ed674406d..675588a00be 100644
--- a/src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs
+++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs
@@ -353,19 +353,7 @@ impl FlycheckActor {
                             package_id: None,
                         });
                     } else {
-                        for (package_id, status) in mem::take(&mut self.package_status) {
-                            if let DiagnosticReceived::No = status {
-                                tracing::trace!(
-                                    flycheck_id = self.id,
-                                    package_id = package_id.repr,
-                                    "clearing diagnostics"
-                                );
-                                self.send(FlycheckMessage::ClearDiagnostics {
-                                    id: self.id,
-                                    package_id: Some(package_id),
-                                });
-                            }
-                        }
+                        self.send_clear_diagnostics();
                     }
 
                     self.report_progress(Progress::DidFinish(res));
@@ -429,7 +417,23 @@ impl FlycheckActor {
             command_handle.cancel();
             self.command_receiver.take();
             self.report_progress(Progress::DidCancel);
-            self.package_status.clear();
+            self.send_clear_diagnostics();
+        }
+    }
+
+    fn send_clear_diagnostics(&mut self) {
+        for (package_id, status) in mem::take(&mut self.package_status) {
+            if let DiagnosticReceived::No = status {
+                tracing::trace!(
+                    flycheck_id = self.id,
+                    package_id = package_id.repr,
+                    "clearing diagnostics"
+                );
+                self.send(FlycheckMessage::ClearDiagnostics {
+                    id: self.id,
+                    package_id: Some(package_id),
+                });
+            }
         }
     }