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.rs29
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)
}