about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2024-01-31 10:54:52 +0100
committerLukas Wirth <lukastw97@gmail.com>2024-02-08 14:53:12 +0100
commit91dab4d72039754a2178c3974fb7bdc24719d3e7 (patch)
tree9f0f7f34af04d41773facb34b35e56e5d7beb700
parent4bf6b160a90721aa5c11c6306ae4b1144afff4c6 (diff)
downloadrust-91dab4d72039754a2178c3974fb7bdc24719d3e7.tar.gz
rust-91dab4d72039754a2178c3974fb7bdc24719d3e7.zip
Better error message for when proc-macros have not yet been built
-rw-r--r--crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs2
-rw-r--r--crates/rust-analyzer/src/reload.rs8
2 files changed, 8 insertions, 2 deletions
diff --git a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs
index 015a3d6b2ce..340f77feea8 100644
--- a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs
+++ b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs
@@ -32,7 +32,7 @@ pub(crate) fn unresolved_proc_macro(
     let severity = if config_enabled { Severity::Error } else { Severity::WeakWarning };
     let def_map = ctx.sema.db.crate_def_map(d.krate);
     let message = if config_enabled {
-        def_map.proc_macro_loading_error().unwrap_or("proc macro not found in the built dylib")
+        def_map.proc_macro_loading_error().unwrap_or("internal error")
     } else {
         match d.kind {
             hir::MacroKind::Attr if proc_macros_enabled => "attribute macro expansion is disabled",
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index 2a0478d62f5..dcf6089ca7b 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -528,10 +528,16 @@ impl GlobalState {
             (crate_graph, proc_macros, crate_graph_file_dependencies)
         };
 
+        let mut change = Change::new();
         if self.config.expand_proc_macros() {
+            change.set_proc_macros(
+                crate_graph
+                    .iter()
+                    .map(|id| (id, Err("Proc-macros have not been built yet".to_owned())))
+                    .collect(),
+            );
             self.fetch_proc_macros_queue.request_op(cause, proc_macro_paths);
         }
-        let mut change = Change::new();
         change.set_crate_graph(crate_graph);
         self.analysis_host.apply_change(change);
         self.crate_graph_file_dependencies = crate_graph_file_dependencies;