When editing rust code, the project diagnostics view sometimes fails to update, so that you have to close the view and re-open it to see the correct state. This PR fixes one possible cause of that problem. There was an async step in between *receiving* diagnostics from the language server and updating the diagnostics, due to an async call to `LspAdapter::process_diagnostics`. This could cause the following sequence of events to happen: 1. Rust-analyzer sends us new diagnostics for a file `a.rs` 2. We call `process_diagnostics` with those diagnostics 3. Rust-analyzer sends us a `WorkDoneProgress` message, indicating that the "flycheck" (aka `cargo check`) process has completed 4. We update the project diagnostics view due to this message. 5. The `process_diagnostics` call for `a.rs` completes 6. 💥 We have the new diagnostics for `a.rs`, but do not update the project diagnostics view again. This PR fixes this bug by simply making `process_diagnostics` synchronous. There is no I/O or expensive computation happening in that method. If we need to make it asynchronous in the future, we need to introduce a queue that ensures that `publishDiagnostics` and `workDoneProgress` messages are processed serially. Release Notes: - Fixed a bug where the project diagnostics view would sometimes fail to update properly when using Rust-analyzer.
3 files changedLine totals unavailable