diff options
Diffstat (limited to 'compiler/rustc_interface/src/proc_macro_decls.rs')
| -rw-r--r-- | compiler/rustc_interface/src/proc_macro_decls.rs | 9 |
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)) } |
