Skip to content

Commit 70ccda3

Browse files
committed
Fix broken tests
- Handle case of no projects. The notification still needs to be posted
1 parent e3db4f3 commit 70ccda3

File tree

1 file changed

+29
-26
lines changed

1 file changed

+29
-26
lines changed

crates/rust-analyzer/src/main_loop.rs

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -714,45 +714,48 @@ fn send_startup_progress(
714714
world_state: &WorldState,
715715
) {
716716
let total: usize = world_state.workspaces.iter().map(|it| it.n_packages()).sum();
717+
let prev_progress = loop_state.roots_scanned_progress;
717718
let progress = total - world_state.roots_to_scan;
718-
if loop_state.roots_scanned_progress == Some(progress) {
719+
if prev_progress == Some(progress) {
719720
return;
720721
}
721722
loop_state.roots_scanned_progress = Some(progress);
722723

723-
match progress {
724-
0 => {
725-
let work_done_progress_create = request_new::<req::WorkDoneProgressCreate>(
726-
loop_state.next_request_id(),
727-
WorkDoneProgressCreateParams {
728-
token: req::ProgressToken::String("rustAnalyzer/startup".into()),
729-
},
730-
);
731-
sender.send(work_done_progress_create.into()).unwrap();
732-
send_startup_progress_notif(
733-
sender,
734-
WorkDoneProgress::Begin(WorkDoneProgressBegin {
735-
title: "rust-analyzer".into(),
736-
cancellable: None,
737-
message: Some(format!("{}/{} packages", progress, total)),
738-
percentage: Some(100.0 * progress as f64 / total as f64),
739-
}),
740-
);
741-
}
742-
progress if progress == total => send_startup_progress_notif(
724+
if prev_progress.is_none() {
725+
let work_done_progress_create = request_new::<req::WorkDoneProgressCreate>(
726+
loop_state.next_request_id(),
727+
WorkDoneProgressCreateParams {
728+
token: req::ProgressToken::String("rustAnalyzer/startup".into()),
729+
},
730+
);
731+
sender.send(work_done_progress_create.into()).unwrap();
732+
send_startup_progress_notif(
743733
sender,
744-
WorkDoneProgress::End(WorkDoneProgressEnd {
745-
message: Some(format!("rust-analyzer loaded, {} packages", progress)),
734+
WorkDoneProgress::Begin(WorkDoneProgressBegin {
735+
title: "rust-analyzer".into(),
736+
cancellable: None,
737+
message: Some(format!("{}/{} packages", progress, total)),
738+
percentage: Some(100.0 * progress as f64 / total as f64),
746739
}),
747-
),
748-
progress => send_startup_progress_notif(
740+
);
741+
} else if progress < total {
742+
send_startup_progress_notif(
749743
sender,
750744
WorkDoneProgress::Report(WorkDoneProgressReport {
751745
cancellable: None,
752746
message: Some(format!("{}/{} packages", progress, total)),
753747
percentage: Some(100.0 * progress as f64 / total as f64),
754748
}),
755-
),
749+
)
750+
}
751+
752+
if progress == total {
753+
send_startup_progress_notif(
754+
sender,
755+
WorkDoneProgress::End(WorkDoneProgressEnd {
756+
message: Some(format!("rust-analyzer loaded, {} packages", progress)),
757+
}),
758+
)
756759
}
757760
}
758761

0 commit comments

Comments
 (0)