about summary refs log tree commit diff
path: root/compiler/rustc_interface/src/proc_macro_decls.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_interface/src/proc_macro_decls.rs')
-rw-r--r--compiler/rustc_interface/src/proc_macro_decls.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/rustc_interface/src/proc_macro_decls.rs b/compiler/rustc_interface/src/proc_macro_decls.rs
index c0316ce58d2..d0b895643c5 100644
--- a/compiler/rustc_interface/src/proc_macro_decls.rs
+++ b/compiler/rustc_interface/src/proc_macro_decls.rs
@@ -7,7 +7,14 @@ use rustc_span::symbol::sym;
 
 fn proc_macro_decls_static(tcx: TyCtxt<'_>, (): ()) -> Option<LocalDefId> {
     let mut finder = Finder { tcx, decls: None };
-    tcx.hir().visit_all_item_likes(&mut finder);
+
+    for id in tcx.hir().items() {
+        let item = tcx.hir().item(id);
+        let attrs = finder.tcx.hir().attrs(item.hir_id());
+        if finder.tcx.sess.contains_name(attrs, sym::rustc_proc_macro_decls) {
+            finder.decls = Some(item.hir_id());
+        }
+    }
 
     finder.decls.map(|id| tcx.hir().local_def_id(id))
 }