Merge pull request #1808 from zed-industries/fix-diagnostics-on-rust

Match progress token's prefix to detect disk-based diagnostic progress
This commit is contained in:
Antonio Scandurra 2022-10-25 10:46:59 +01:00
parent 50ba8bdc9b
commit 70cf542408
3 changed files with 10 additions and 5 deletions

View file

@ -2262,8 +2262,11 @@ impl Project {
return; return;
} }
let is_disk_based_diagnostics_progress = let is_disk_based_diagnostics_progress = disk_based_diagnostics_progress_token
Some(token.as_ref()) == disk_based_diagnostics_progress_token.as_deref(); .as_ref()
.map_or(false, |disk_based_token| {
token.starts_with(disk_based_token)
});
match progress { match progress {
lsp::WorkDoneProgress::Begin(report) => { lsp::WorkDoneProgress::Begin(report) => {

View file

@ -644,7 +644,9 @@ async fn test_disk_based_diagnostics_progress(cx: &mut gpui::TestAppContext) {
let mut events = subscribe(&project, cx); let mut events = subscribe(&project, cx);
let fake_server = fake_servers.next().await.unwrap(); let fake_server = fake_servers.next().await.unwrap();
fake_server.start_progress(progress_token).await; fake_server
.start_progress(format!("{}/0", progress_token))
.await;
assert_eq!( assert_eq!(
events.next().await.unwrap(), events.next().await.unwrap(),
Event::DiskBasedDiagnosticsStarted { Event::DiskBasedDiagnosticsStarted {
@ -670,7 +672,7 @@ async fn test_disk_based_diagnostics_progress(cx: &mut gpui::TestAppContext) {
} }
); );
fake_server.end_progress(progress_token); fake_server.end_progress(format!("{}/0", progress_token));
assert_eq!( assert_eq!(
events.next().await.unwrap(), events.next().await.unwrap(),
Event::DiskBasedDiagnosticsFinished { Event::DiskBasedDiagnosticsFinished {

View file

@ -93,7 +93,7 @@ impl LspAdapter for RustLspAdapter {
} }
async fn disk_based_diagnostics_progress_token(&self) -> Option<String> { async fn disk_based_diagnostics_progress_token(&self) -> Option<String> {
Some("rustAnalyzer/cargo check".into()) Some("rust-analyzer/checkOnSave".into())
} }
async fn process_diagnostics(&self, params: &mut lsp::PublishDiagnosticsParams) { async fn process_diagnostics(&self, params: &mut lsp::PublishDiagnosticsParams) {