Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/main_loop.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index c2b887c9b3..099eed92b2 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -452,7 +452,11 @@ impl GlobalState {
// Project has loaded properly, kick off initial flycheck
self.flycheck.iter().for_each(|flycheck| flycheck.restart_workspace(None));
}
- if self.config.prefill_caches() {
+ // delay initial cache priming until proc macros are loaded, or we will load up a bunch of garbage into salsa
+ let proc_macros_loaded = self.config.prefill_caches()
+ && !self.config.expand_proc_macros()
+ || self.fetch_proc_macros_queue.last_op_result().copied().unwrap_or(false);
+ if proc_macros_loaded {
self.prime_caches_queue.request_op("became quiescent".to_owned(), ());
}
}