about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJake Heinz <jh@discordapp.com>2022-01-14 09:35:41 +0000
committerJake Heinz <jh@discordapp.com>2022-01-14 09:35:41 +0000
commitc8aa2f6a6149b2b98c4c929c553d82c54e0a70eb (patch)
treef9f3c2e7dbaf7099c1940a62a001abfb0455ccf4
parent5f0c1aa2ded3e55b14e029a8b37cb04c842bd174 (diff)
downloadrust-c8aa2f6a6149b2b98c4c929c553d82c54e0a70eb.tar.gz
rust-c8aa2f6a6149b2b98c4c929c553d82c54e0a70eb.zip
use index map
-rw-r--r--crates/ide/src/prime_caches.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/crates/ide/src/prime_caches.rs b/crates/ide/src/prime_caches.rs
index 909f980a8fb..573f27bd2c7 100644
--- a/crates/ide/src/prime_caches.rs
+++ b/crates/ide/src/prime_caches.rs
@@ -5,9 +5,12 @@
 mod topologic_sort;
 
 use hir::db::DefDatabase;
-use ide_db::base_db::{
-    salsa::{Database, ParallelDatabase, Snapshot},
-    CrateGraph, CrateId, SourceDatabase, SourceDatabaseExt,
+use ide_db::{
+    base_db::{
+        salsa::{Database, ParallelDatabase, Snapshot},
+        CrateGraph, CrateId, SourceDatabase, SourceDatabaseExt,
+    },
+    FxIndexMap,
 };
 use rustc_hash::{FxHashMap, FxHashSet};
 
@@ -105,8 +108,11 @@ pub(crate) fn parallel_prime_caches(
 
         let crates_total = crates_to_prime.len();
         let mut crates_done = 0;
+
+        // an index map is used to preserve ordering so we can sort the progress report in order of
+        // "longest crate to index" first
         let mut crates_currently_indexing =
-            FxHashMap::with_capacity_and_hasher(num_worker_threads as _, Default::default());
+            FxIndexMap::with_capacity_and_hasher(num_worker_threads as _, Default::default());
 
         while !crates_to_prime.is_empty() {
             db.unwind_if_cancelled();