diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-12-28 18:13:12 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2024-12-28 18:16:55 +0100 |
| commit | 171be2bd58d0c3714570e405d51476beefe151af (patch) | |
| tree | cbf74e0d1dcfa4998bcfc034b75843c45fefca10 | |
| parent | eea4a9ab9ee7fd2546f4270a773533a6a0dbe524 (diff) | |
| download | rust-171be2bd58d0c3714570e405d51476beefe151af.tar.gz rust-171be2bd58d0c3714570e405d51476beefe151af.zip | |
fix: Fix flycheck diagnostics flickering for binary targets
| -rw-r--r-- | src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs | 18 |
1 files changed, 15 insertions, 3 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 53c145f884e..c7bb275c5f1 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs @@ -345,6 +345,7 @@ impl FlycheckActor { ); } if self.package_status.is_empty() { + tracing::trace!(flycheck_id = self.id, "clearing diagnostics"); // We finished without receiving any diagnostics. // That means all of them are stale. self.send(FlycheckMessage::ClearDiagnostics { @@ -354,6 +355,11 @@ impl FlycheckActor { } 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), @@ -385,9 +391,15 @@ impl FlycheckActor { "diagnostic received" ); if let Some(package_id) = &package_id { - if !self.package_status.contains_key(package_id) { - self.package_status - .insert(package_id.clone(), DiagnosticReceived::Yes); + if let None | Some(DiagnosticReceived::No) = self + .package_status + .insert(package_id.clone(), DiagnosticReceived::Yes) + { + 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.clone()), |
