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.rs | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs index 37350a7aaf..5ebfe33dab 100644 --- a/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs +++ b/crates/ide-diagnostics/src/handlers/unresolved_proc_macro.rs @@ -1,3 +1,5 @@ +use hir::db::DefDatabase; + use crate::{Diagnostic, DiagnosticsContext, Severity}; // Diagnostic: unresolved-proc-macro @@ -29,19 +31,24 @@ pub(crate) fn unresolved_proc_macro( Some(name) => format!("proc macro `{}` not expanded", name), None => "proc macro not expanded".to_string(), }; - let (message, severity) = if config_enabled { - (message, Severity::Error) - } else { - let message = match d.kind { - hir::MacroKind::Attr if proc_macros_enabled => { - format!("{message}{}", " (attribute macro expansion is disabled)") + let severity = if config_enabled { Severity::Error } else { Severity::WeakWarning }; + let def_map = d.krate.map(|krate| ctx.sema.db.crate_def_map(krate)); + let message = format!( + "{message}: {}", + if config_enabled { + match def_map.as_ref().and_then(|def_map| def_map.proc_macro_loading_error()) { + Some(e) => e, + None => "proc macro not found", } - _ => { - format!("{message}{}", " (proc-macro expansion is disabled)") + } else { + match d.kind { + hir::MacroKind::Attr if proc_macros_enabled => { + "attribute macro expansion is disabled" + } + _ => "proc-macro expansion is disabled", } - }; - (message, Severity::WeakWarning) - }; + }, + ); Diagnostic::new("unresolved-proc-macro", message, display_range).severity(severity) } |