Skip to content

Commit 9523102

Browse files
authored
Merge pull request #21257 from Veykril/push-qnolwwkvuwxk
minor: Emit `WorkspaceDiagnosticRefresh` when flycheck finished
2 parents 560d2ec + 701bb2f commit 9523102

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,11 +437,17 @@ impl GlobalState {
437437
}
438438
}
439439
Event::Flycheck(message) => {
440-
let _p = tracing::info_span!("GlobalState::handle_event/flycheck").entered();
441-
self.handle_flycheck_msg(message);
440+
let mut cargo_finished = false;
441+
self.handle_flycheck_msg(message, &mut cargo_finished);
442442
// Coalesce many flycheck updates into a single loop turn
443443
while let Ok(message) = self.flycheck_receiver.try_recv() {
444-
self.handle_flycheck_msg(message);
444+
self.handle_flycheck_msg(message, &mut cargo_finished);
445+
}
446+
if cargo_finished {
447+
self.send_request::<lsp_types::request::WorkspaceDiagnosticRefresh>(
448+
(),
449+
|_, _| (),
450+
);
445451
}
446452
}
447453
Event::TestResult(message) => {
@@ -1109,7 +1115,7 @@ impl GlobalState {
11091115
}
11101116
}
11111117

1112-
fn handle_flycheck_msg(&mut self, message: FlycheckMessage) {
1118+
fn handle_flycheck_msg(&mut self, message: FlycheckMessage, cargo_finished: &mut bool) {
11131119
match message {
11141120
FlycheckMessage::AddDiagnostic {
11151121
id,
@@ -1167,6 +1173,7 @@ impl GlobalState {
11671173
flycheck::Progress::DidCheckCrate(target) => (Progress::Report, Some(target)),
11681174
flycheck::Progress::DidCancel => {
11691175
self.last_flycheck_error = None;
1176+
*cargo_finished = true;
11701177
(Progress::End, None)
11711178
}
11721179
flycheck::Progress::DidFailToRestart(err) => {
@@ -1177,6 +1184,7 @@ impl GlobalState {
11771184
flycheck::Progress::DidFinish(result) => {
11781185
self.last_flycheck_error =
11791186
result.err().map(|err| format!("cargo check failed to start: {err}"));
1187+
*cargo_finished = true;
11801188
(Progress::End, None)
11811189
}
11821190
};

src/tools/rust-analyzer/crates/rust-analyzer/tests/slow-tests/support.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ impl Project<'_> {
4848
"enable": false,
4949
},
5050
},
51+
"checkOnSave": false,
5152
"procMacro": {
5253
"enable": false,
5354
}

0 commit comments

Comments
 (0)