Skip to content

Commit b6dec2e

Browse files
committed
Fix tests part 2...
1 parent 70ccda3 commit b6dec2e

File tree

1 file changed

+31
-34
lines changed

1 file changed

+31
-34
lines changed

crates/rust-analyzer/src/main_loop.rs

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -426,12 +426,6 @@ fn loop_turn(
426426
});
427427
}
428428

429-
if !loop_state.workspace_loaded
430-
&& world_state.feature_flags.get("notifications.workspace-loaded")
431-
{
432-
send_startup_progress(&connection.sender, loop_state, world_state);
433-
}
434-
435429
if !loop_state.workspace_loaded
436430
&& world_state.roots_to_scan == 0
437431
&& loop_state.pending_libraries.is_empty()
@@ -444,6 +438,9 @@ fn loop_turn(
444438
let snap = world_state.snapshot();
445439
move || snap.analysis().prime_caches(subs).unwrap_or_else(|_: Canceled| ())
446440
});
441+
send_startup_progress(&connection.sender, loop_state, world_state);
442+
} else if !loop_state.workspace_loaded {
443+
send_startup_progress(&connection.sender, loop_state, world_state);
447444
}
448445

449446
if state_changed {
@@ -713,49 +710,49 @@ fn send_startup_progress(
713710
loop_state: &mut LoopState,
714711
world_state: &WorldState,
715712
) {
713+
if !world_state.feature_flags.get("notifications.workspace-loaded") {
714+
return;
715+
}
716+
716717
let total: usize = world_state.workspaces.iter().map(|it| it.n_packages()).sum();
717718
let prev_progress = loop_state.roots_scanned_progress;
718719
let progress = total - world_state.roots_to_scan;
719-
if prev_progress == Some(progress) {
720-
return;
721-
}
722720
loop_state.roots_scanned_progress = Some(progress);
723721

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(
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-
} else if progress < total {
742-
send_startup_progress_notif(
722+
match (prev_progress, loop_state.workspace_loaded) {
723+
(None, false) => {
724+
let work_done_progress_create = request_new::<req::WorkDoneProgressCreate>(
725+
loop_state.next_request_id(),
726+
WorkDoneProgressCreateParams {
727+
token: req::ProgressToken::String("rustAnalyzer/startup".into()),
728+
},
729+
);
730+
sender.send(work_done_progress_create.into()).unwrap();
731+
send_startup_progress_notif(
732+
sender,
733+
WorkDoneProgress::Begin(WorkDoneProgressBegin {
734+
title: "rust-analyzer".into(),
735+
cancellable: None,
736+
message: Some(format!("{}/{} packages", progress, total)),
737+
percentage: Some(100.0 * progress as f64 / total as f64),
738+
}),
739+
);
740+
}
741+
(Some(prev), false) if progress != prev => send_startup_progress_notif(
743742
sender,
744743
WorkDoneProgress::Report(WorkDoneProgressReport {
745744
cancellable: None,
746745
message: Some(format!("{}/{} packages", progress, total)),
747746
percentage: Some(100.0 * progress as f64 / total as f64),
748747
}),
749-
)
750-
}
751-
752-
if progress == total {
753-
send_startup_progress_notif(
748+
),
749+
(_, true) => send_startup_progress_notif(
754750
sender,
755751
WorkDoneProgress::End(WorkDoneProgressEnd {
756752
message: Some(format!("rust-analyzer loaded, {} packages", progress)),
757753
}),
758-
)
754+
),
755+
_ => {}
759756
}
760757
}
761758

0 commit comments

Comments
 (0)