diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2025-01-02 09:36:54 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2025-01-02 09:36:54 +0100 |
| commit | efbbf570a01189343665f0f06cb9b687b5015cb0 (patch) | |
| tree | c09ef450eb04cb47c545d8a6aff7baac5505c3de | |
| parent | 74d0d4e050418797acbeb55bcc9ad12268a7ffde (diff) | |
| download | rust-efbbf570a01189343665f0f06cb9b687b5015cb0.tar.gz rust-efbbf570a01189343665f0f06cb9b687b5015cb0.zip | |
fix: Fix flycheck cancellations leaving stale errors
| -rw-r--r-- | src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs | 32 |
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), + }); + } } } |
