Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs
index fde1d1323f..fea3a0e832 100644
--- a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs
+++ b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs
@@ -8,20 +8,25 @@ use crate::{Diagnostic, DiagnosticsContext, Severity};
//
// If you are seeing a lot of "proc macro not expanded" warnings, you can add this option to the
// `rust-analyzer.diagnostics.disabled` list to prevent them from showing. Alternatively you can
-// enable support for procedural macros (see `rust-analyzer.procMacro.enable`).
+// enable support for procedural macros (see `rust-analyzer.procMacro.attributes.enable`).
pub(crate) fn unresolved_proc_macro(
ctx: &DiagnosticsContext<'_>,
d: &hir::UnresolvedProcMacro,
+ attr_proc_macros_enabled: bool,
) -> Diagnostic {
// Use more accurate position if available.
let display_range = d
.precise_location
.unwrap_or_else(|| ctx.sema.diagnostics_display_range(d.node.clone()).range);
- // FIXME: it would be nice to tell the user whether proc macros are currently disabled
let message = match &d.macro_name {
Some(name) => format!("proc macro `{}` not expanded", name),
None => "proc macro not expanded".to_string(),
};
+ let message = format!(
+ "{message}{}",
+ if attr_proc_macros_enabled { "" } else { " (attribute macro expansion is disabled)" }
+ );
- Diagnostic::new("unresolved-proc-macro", message, display_range).severity(Severity::WeakWarning)
+ Diagnostic::new("unresolved-proc-macro", message, display_range)
+ .severity(if attr_proc_macros_enabled { Severity::Error } else { Severity::WeakWarning })
}