Skip to content

Commit 171be2b

Browse files
committed
fix: Fix flycheck diagnostics flickering for binary targets
1 parent eea4a9a commit 171be2b

File tree

1 file changed

+15
-3
lines changed
  • src/tools/rust-analyzer/crates/rust-analyzer/src

1 file changed

+15
-3
lines changed

src/tools/rust-analyzer/crates/rust-analyzer/src/flycheck.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@ impl FlycheckActor {
345345
);
346346
}
347347
if self.package_status.is_empty() {
348+
tracing::trace!(flycheck_id = self.id, "clearing diagnostics");
348349
// We finished without receiving any diagnostics.
349350
// That means all of them are stale.
350351
self.send(FlycheckMessage::ClearDiagnostics {
@@ -354,6 +355,11 @@ impl FlycheckActor {
354355
} else {
355356
for (package_id, status) in mem::take(&mut self.package_status) {
356357
if let DiagnosticReceived::No = status {
358+
tracing::trace!(
359+
flycheck_id = self.id,
360+
package_id = package_id.repr,
361+
"clearing diagnostics"
362+
);
357363
self.send(FlycheckMessage::ClearDiagnostics {
358364
id: self.id,
359365
package_id: Some(package_id),
@@ -385,9 +391,15 @@ impl FlycheckActor {
385391
"diagnostic received"
386392
);
387393
if let Some(package_id) = &package_id {
388-
if !self.package_status.contains_key(package_id) {
389-
self.package_status
390-
.insert(package_id.clone(), DiagnosticReceived::Yes);
394+
if let None | Some(DiagnosticReceived::No) = self
395+
.package_status
396+
.insert(package_id.clone(), DiagnosticReceived::Yes)
397+
{
398+
tracing::trace!(
399+
flycheck_id = self.id,
400+
package_id = package_id.repr,
401+
"clearing diagnostics"
402+
);
391403
self.send(FlycheckMessage::ClearDiagnostics {
392404
id: self.id,
393405
package_id: Some(package_id.clone()),

0 commit comments

Comments
 (0)