diff options
| author | bors <bors@rust-lang.org> | 2022-06-12 00:56:52 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-06-12 00:56:52 +0000 |
| commit | 604b1c8409e850e738e0c211a11de0c42171a979 (patch) | |
| tree | 9e1faa4aadf52b4609b2e7539be17d2b48acae87 | |
| parent | ccab003db643b68a783db2d1fecc3ece86c35069 (diff) | |
| parent | ad109f7f0ab2ae1ad05fc18d9293a158a2b5ecd1 (diff) | |
| download | rust-604b1c8409e850e738e0c211a11de0c42171a979.tar.gz rust-604b1c8409e850e738e0c211a11de0c42171a979.zip | |
Auto merge of #12508 - Veykril:req-retry, r=Veykril
fix: Don't respond to cancelled requests when retrying them Fixes https://github.com/rust-lang/rust-analyzer/issues/12482
| -rw-r--r-- | crates/rust-analyzer/src/main_loop.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index d70703ff46b..38c23e8b657 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -197,7 +197,7 @@ impl GlobalState { let was_quiescent = self.is_quiescent(); match event { Event::Lsp(msg) => match msg { - lsp_server::Message::Request(req) => self.on_request(loop_start, req), + lsp_server::Message::Request(req) => self.on_new_request(loop_start, req), lsp_server::Message::Notification(not) => { self.on_notification(not)?; } @@ -209,7 +209,7 @@ impl GlobalState { loop { match task { Task::Response(response) => self.respond(response), - Task::Retry(req) => self.on_request(loop_start, req), + Task::Retry(req) => self.on_request(req), Task::Diagnostics(diagnostics_per_file) => { for (file_id, diagnostics) in diagnostics_per_file { self.diagnostics.set_native_diagnostics(file_id, diagnostics) @@ -555,9 +555,12 @@ impl GlobalState { Ok(()) } - fn on_request(&mut self, request_received: Instant, req: Request) { + fn on_new_request(&mut self, request_received: Instant, req: Request) { self.register_request(&req, request_received); + self.on_request(req); + } + fn on_request(&mut self, req: Request) { if self.shutdown_requested { self.respond(lsp_server::Response::new_err( req.id, |
