Store a list of local macros on the resolver; use for resolving intra-doc macro links
This commit is contained in:
parent
7ac48d793b
commit
00ce770e34
3 changed files with 6 additions and 1 deletions
|
@ -1320,6 +1320,7 @@ pub struct Resolver<'a> {
|
|||
crate_loader: &'a mut CrateLoader,
|
||||
macro_names: FxHashSet<Ident>,
|
||||
global_macros: FxHashMap<Name, &'a NameBinding<'a>>,
|
||||
pub all_macros: FxHashMap<Name, Def>,
|
||||
lexical_macro_resolutions: Vec<(Ident, &'a Cell<LegacyScope<'a>>)>,
|
||||
macro_map: FxHashMap<DefId, Rc<SyntaxExtension>>,
|
||||
macro_defs: FxHashMap<Mark, DefId>,
|
||||
|
@ -1596,6 +1597,7 @@ impl<'a> Resolver<'a> {
|
|||
crate_loader,
|
||||
macro_names: FxHashSet(),
|
||||
global_macros: FxHashMap(),
|
||||
all_macros: FxHashMap(),
|
||||
lexical_macro_resolutions: Vec::new(),
|
||||
macro_map: FxHashMap(),
|
||||
macro_exports: Vec::new(),
|
||||
|
|
|
@ -755,8 +755,9 @@ impl<'a> Resolver<'a> {
|
|||
*legacy_scope = LegacyScope::Binding(self.arenas.alloc_legacy_binding(LegacyBinding {
|
||||
parent: Cell::new(*legacy_scope), ident: ident, def_id: def_id, span: item.span,
|
||||
}));
|
||||
let def = Def::Macro(def_id, MacroKind::Bang);
|
||||
self.all_macros.insert(ident.name, def);
|
||||
if attr::contains_name(&item.attrs, "macro_export") {
|
||||
let def = Def::Macro(def_id, MacroKind::Bang);
|
||||
self.macro_exports.push(Export {
|
||||
ident: ident.modern(),
|
||||
def: def,
|
||||
|
|
|
@ -940,6 +940,8 @@ impl Clean<Attributes> for [ast::Attribute] {
|
|||
.resolve_macro_to_def_inner(mark, &path, MacroKind::Bang, false);
|
||||
if let Ok(def) = res {
|
||||
def
|
||||
} else if let Some(def) = resolver.all_macros.get(&path_str.into()) {
|
||||
*def
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue