From 19b208cc3fae4965ceea85de2240731158229ca6 Mon Sep 17 00:00:00 2001 From: inquisitivecrystal <22333129+inquisitivecrystal@users.noreply.github.com> Date: Fri, 13 Aug 2021 22:13:35 -0700 Subject: [PATCH] Teach clippy that macros are now HIR items --- src/tools/clippy/clippy_lints/src/missing_doc.rs | 1 + src/tools/clippy/clippy_lints/src/missing_inline.rs | 1 + .../clippy/clippy_lints/src/utils/inspector.rs | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/src/tools/clippy/clippy_lints/src/missing_doc.rs b/src/tools/clippy/clippy_lints/src/missing_doc.rs index d358e9fb876a7..acf54073d247c 100644 --- a/src/tools/clippy/clippy_lints/src/missing_doc.rs +++ b/src/tools/clippy/clippy_lints/src/missing_doc.rs @@ -123,6 +123,7 @@ impl<'tcx> LateLintPass<'tcx> for MissingDoc { hir::ItemKind::Const(..) | hir::ItemKind::Enum(..) | hir::ItemKind::Mod(..) + | hir::ItemKind::Macro{ .. } | hir::ItemKind::Static(..) | hir::ItemKind::Struct(..) | hir::ItemKind::Trait(..) diff --git a/src/tools/clippy/clippy_lints/src/missing_inline.rs b/src/tools/clippy/clippy_lints/src/missing_inline.rs index 977e6d966e873..3f26ec2e73237 100644 --- a/src/tools/clippy/clippy_lints/src/missing_inline.rs +++ b/src/tools/clippy/clippy_lints/src/missing_inline.rs @@ -119,6 +119,7 @@ impl<'tcx> LateLintPass<'tcx> for MissingInline { hir::ItemKind::Const(..) | hir::ItemKind::Enum(..) | hir::ItemKind::Mod(..) + | hir::ItemKind::Macro { .. } | hir::ItemKind::Static(..) | hir::ItemKind::Struct(..) | hir::ItemKind::TraitAlias(..) diff --git a/src/tools/clippy/clippy_lints/src/utils/inspector.rs b/src/tools/clippy/clippy_lints/src/utils/inspector.rs index f7ddee12dcf64..c013bb9d27faf 100644 --- a/src/tools/clippy/clippy_lints/src/utils/inspector.rs +++ b/src/tools/clippy/clippy_lints/src/utils/inspector.rs @@ -408,6 +408,19 @@ fn print_item(cx: &LateContext<'_>, item: &hir::Item<'_>) { }, hir::ItemKind::Mod(..) => println!("module"), hir::ItemKind::ForeignMod { abi, .. } => println!("foreign module with abi: {}", abi), + hir::ItemKind::Macro { ref macro_def, .. } => { + if macro_def.ast.macro_rules { + if macro_def.is_exported { + println!("exported macro introduced by `macro_rules!`"); + } else { + println!("nonexported macro introduced by `macro_rules!`"); + } + } else { + // There's no point in distinguishing exported and nonexported `macro` + // macros. That's defined their visibility, which was printed above. + println!("macro introduced by `macro`"); + } + } hir::ItemKind::GlobalAsm(asm) => println!("global asm: {:?}", asm), hir::ItemKind::TyAlias(..) => { println!("type alias for {:?}", cx.tcx.type_of(did));