diff options
author | Steffen Lyngbaek <[email protected]> | 2020-03-16 04:44:27 +0000 |
---|---|---|
committer | Steffen Lyngbaek <[email protected]> | 2020-03-16 04:44:27 +0000 |
commit | 70ccda39414afa5bd5a92d3edec005e7830c6420 (patch) | |
tree | 49fc18101ee16fe7e4ec7e5c5edb6a7b0aa75d8b | |
parent | e3db4f3716cb67f75d818207b7698cf3464aad57 (diff) |
Fix broken tests
- Handle case of no projects. The notification still needs to be posted
-rw-r--r-- | crates/rust-analyzer/src/main_loop.rs | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 7e00d58ec..917dfad78 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs | |||
@@ -714,45 +714,48 @@ fn send_startup_progress( | |||
714 | world_state: &WorldState, | 714 | world_state: &WorldState, |
715 | ) { | 715 | ) { |
716 | let total: usize = world_state.workspaces.iter().map(|it| it.n_packages()).sum(); | 716 | let total: usize = world_state.workspaces.iter().map(|it| it.n_packages()).sum(); |
717 | let prev_progress = loop_state.roots_scanned_progress; | ||
717 | let progress = total - world_state.roots_to_scan; | 718 | let progress = total - world_state.roots_to_scan; |
718 | if loop_state.roots_scanned_progress == Some(progress) { | 719 | if prev_progress == Some(progress) { |
719 | return; | 720 | return; |
720 | } | 721 | } |
721 | loop_state.roots_scanned_progress = Some(progress); | 722 | loop_state.roots_scanned_progress = Some(progress); |
722 | 723 | ||
723 | match progress { | 724 | if prev_progress.is_none() { |
724 | 0 => { | 725 | let work_done_progress_create = request_new::<req::WorkDoneProgressCreate>( |
725 | let work_done_progress_create = request_new::<req::WorkDoneProgressCreate>( | 726 | loop_state.next_request_id(), |
726 | loop_state.next_request_id(), | 727 | WorkDoneProgressCreateParams { |
727 | WorkDoneProgressCreateParams { | 728 | token: req::ProgressToken::String("rustAnalyzer/startup".into()), |
728 | token: req::ProgressToken::String("rustAnalyzer/startup".into()), | 729 | }, |
729 | }, | 730 | ); |
730 | ); | 731 | sender.send(work_done_progress_create.into()).unwrap(); |
731 | sender.send(work_done_progress_create.into()).unwrap(); | 732 | send_startup_progress_notif( |
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( | ||
743 | sender, | 733 | sender, |
744 | WorkDoneProgress::End(WorkDoneProgressEnd { | 734 | WorkDoneProgress::Begin(WorkDoneProgressBegin { |
745 | message: Some(format!("rust-analyzer loaded, {} packages", progress)), | 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), | ||
746 | }), | 739 | }), |
747 | ), | 740 | ); |
748 | progress => send_startup_progress_notif( | 741 | } else if progress < total { |
742 | send_startup_progress_notif( | ||
749 | sender, | 743 | sender, |
750 | WorkDoneProgress::Report(WorkDoneProgressReport { | 744 | WorkDoneProgress::Report(WorkDoneProgressReport { |
751 | cancellable: None, | 745 | cancellable: None, |
752 | message: Some(format!("{}/{} packages", progress, total)), | 746 | message: Some(format!("{}/{} packages", progress, total)), |
753 | percentage: Some(100.0 * progress as f64 / total as f64), | 747 | percentage: Some(100.0 * progress as f64 / total as f64), |
754 | }), | 748 | }), |
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 | ) | ||
756 | } | 759 | } |
757 | } | 760 | } |
758 | 761 | ||