mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 21:13:37 +00:00
Merge pull request #18611 from ChayimFriedman2/proc-macro-warn
fix: Do not report warnings from proc macros, ever
This commit is contained in:
commit
f499faf72b
2 changed files with 13 additions and 0 deletions
|
@ -269,6 +269,13 @@ pub enum MacroDefKind {
|
||||||
ProcMacro(AstId<ast::Fn>, CustomProcMacroExpander, ProcMacroKind),
|
ProcMacro(AstId<ast::Fn>, CustomProcMacroExpander, ProcMacroKind),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl MacroDefKind {
|
||||||
|
#[inline]
|
||||||
|
pub fn is_declarative(&self) -> bool {
|
||||||
|
matches!(self, MacroDefKind::Declarative(..))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct EagerCallInfo {
|
pub struct EagerCallInfo {
|
||||||
/// The expanded argument of the eager macro.
|
/// The expanded argument of the eager macro.
|
||||||
|
|
|
@ -544,7 +544,13 @@ fn handle_diag_from_macros(
|
||||||
sema.db.lookup_intern_syntax_context(span.ctx).outer_expn.is_some_and(|expansion| {
|
sema.db.lookup_intern_syntax_context(span.ctx).outer_expn.is_some_and(|expansion| {
|
||||||
let macro_call =
|
let macro_call =
|
||||||
sema.db.lookup_intern_macro_call(expansion.as_macro_file().macro_call_id);
|
sema.db.lookup_intern_macro_call(expansion.as_macro_file().macro_call_id);
|
||||||
|
// We don't want to show diagnostics for non-local macros at all, but proc macros authors
|
||||||
|
// seem to rely on being able to emit non-warning-free code, so we don't want to show warnings
|
||||||
|
// for them even when the proc macro comes from the same workspace (in rustc that's not a
|
||||||
|
// problem because it doesn't have the concept of workspaces, and proc macros always reside
|
||||||
|
// in a different crate).
|
||||||
!Crate::from(macro_call.def.krate).origin(sema.db).is_local()
|
!Crate::from(macro_call.def.krate).origin(sema.db).is_local()
|
||||||
|
|| !macro_call.def.kind.is_declarative()
|
||||||
})
|
})
|
||||||
}) {
|
}) {
|
||||||
// Disable suggestions for external macros, they'll change library code and it's just bad.
|
// Disable suggestions for external macros, they'll change library code and it's just bad.
|
||||||
|
|
Loading…
Reference in a new issue