rustc_interface/proc_macro_decls.rs
1use rustc_hir::attrs::AttributeKind;
2use rustc_hir::def_id::LocalDefId;
3use rustc_hir::find_attr;
4use rustc_middle::query::Providers;
5use rustc_middle::ty::TyCtxt;
6
7fn proc_macro_decls_static(tcx: TyCtxt<'_>, (): ()) -> Option<LocalDefId> {
8 let mut decls = None;
9
10 for id in tcx.hir_free_items() {
11 if find_attr!(tcx.hir_attrs(id.hir_id()), AttributeKind::RustcProcMacroDecls) {
12 decls = Some(id.owner_id.def_id);
13 }
14 }
15
16 decls
17}
18
19pub(crate) fn provide(providers: &mut Providers) {
20 *providers = Providers { proc_macro_decls_static, ..*providers };
21}