Skip to content

Commit 9ba5281

Browse files
committed
resolve: Move collection of all macro_rules in the crate to rustdoc
1 parent 6c5c7f5 commit 9ba5281

File tree

3 files changed

+13
-14
lines changed

3 files changed

+13
-14
lines changed

compiler/rustc_resolve/src/build_reduced_graph.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1268,7 +1268,6 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
12681268
};
12691269
let binding = (res, vis, span, expansion).to_name_binding(self.r.arenas);
12701270
self.r.set_binding_parent_module(binding, parent_scope.module);
1271-
self.r.all_macro_rules.insert(ident.name, res);
12721271
if is_macro_export {
12731272
let module = self.r.graph_root;
12741273
self.r.define(module, ident, MacroNS, (res, vis, span, expansion, IsMacroExport));

compiler/rustc_resolve/src/lib.rs

+7-11
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ use rustc_span::{Span, DUMMY_SP};
5959
use smallvec::{smallvec, SmallVec};
6060
use std::cell::{Cell, RefCell};
6161
use std::collections::BTreeSet;
62-
use std::{cmp, fmt, mem, ptr};
62+
use std::{cmp, fmt, ptr};
6363
use tracing::debug;
6464

6565
use diagnostics::{ImportSuggestion, LabelSuggestion, Suggestion};
@@ -966,8 +966,6 @@ pub struct Resolver<'a> {
966966
registered_attrs: FxHashSet<Ident>,
967967
registered_tools: RegisteredTools,
968968
macro_use_prelude: FxHashMap<Symbol, &'a NameBinding<'a>>,
969-
/// FIXME: The only user of this is a doc link resolution hack for rustdoc.
970-
all_macro_rules: FxHashMap<Symbol, Res>,
971969
macro_map: FxHashMap<DefId, Lrc<SyntaxExtension>>,
972970
dummy_ext_bang: Lrc<SyntaxExtension>,
973971
dummy_ext_derive: Lrc<SyntaxExtension>,
@@ -1360,7 +1358,6 @@ impl<'a> Resolver<'a> {
13601358
registered_attrs,
13611359
registered_tools,
13621360
macro_use_prelude: FxHashMap::default(),
1363-
all_macro_rules: Default::default(),
13641361
macro_map: FxHashMap::default(),
13651362
dummy_ext_bang: Lrc::new(SyntaxExtension::dummy_bang(session.edition())),
13661363
dummy_ext_derive: Lrc::new(SyntaxExtension::dummy_derive(session.edition())),
@@ -1912,11 +1909,6 @@ impl<'a> Resolver<'a> {
19121909
}
19131910
}
19141911

1915-
// For rustdoc.
1916-
pub fn take_all_macro_rules(&mut self) -> FxHashMap<Symbol, Res> {
1917-
mem::take(&mut self.all_macro_rules)
1918-
}
1919-
19201912
/// For rustdoc.
19211913
/// For local modules returns only reexports, for external modules returns all children.
19221914
pub fn module_children_or_reexports(&self, def_id: DefId) -> Vec<ModChild> {
@@ -1928,8 +1920,12 @@ impl<'a> Resolver<'a> {
19281920
}
19291921

19301922
/// For rustdoc.
1931-
pub fn macro_rules_scope(&self, def_id: LocalDefId) -> MacroRulesScopeRef<'a> {
1932-
*self.macro_rules_scopes.get(&def_id).expect("not a `macro_rules` item")
1923+
pub fn macro_rules_scope(&self, def_id: LocalDefId) -> (MacroRulesScopeRef<'a>, Res) {
1924+
let scope = *self.macro_rules_scopes.get(&def_id).expect("not a `macro_rules` item");
1925+
match scope.get() {
1926+
MacroRulesScope::Binding(mb) => (scope, mb.binding.res()),
1927+
_ => unreachable!(),
1928+
}
19331929
}
19341930

19351931
/// Retrieves the span of the given `DefId` if `DefId` is in the local crate.

src/librustdoc/passes/collect_intra_doc_links/early.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ crate fn early_resolve_intra_doc_links(
4040
traits_in_scope: Default::default(),
4141
all_traits: Default::default(),
4242
all_trait_impls: Default::default(),
43+
all_macro_rules: Default::default(),
4344
document_private_items,
4445
};
4546

@@ -64,7 +65,7 @@ crate fn early_resolve_intra_doc_links(
6465
traits_in_scope: link_resolver.traits_in_scope,
6566
all_traits: Some(link_resolver.all_traits),
6667
all_trait_impls: Some(link_resolver.all_trait_impls),
67-
all_macro_rules: link_resolver.resolver.take_all_macro_rules(),
68+
all_macro_rules: link_resolver.all_macro_rules,
6869
}
6970
}
7071

@@ -82,6 +83,7 @@ struct EarlyDocLinkResolver<'r, 'ra> {
8283
traits_in_scope: DefIdMap<Vec<TraitCandidate>>,
8384
all_traits: Vec<DefId>,
8485
all_trait_impls: Vec<DefId>,
86+
all_macro_rules: FxHashMap<Symbol, Res<ast::NodeId>>,
8587
document_private_items: bool,
8688
}
8789

@@ -339,8 +341,10 @@ impl Visitor<'_> for EarlyDocLinkResolver<'_, '_> {
339341
self.all_trait_impls.push(self.resolver.local_def_id(item.id).to_def_id());
340342
}
341343
ItemKind::MacroDef(macro_def) if macro_def.macro_rules => {
342-
self.parent_scope.macro_rules =
344+
let (macro_rules_scope, res) =
343345
self.resolver.macro_rules_scope(self.resolver.local_def_id(item.id));
346+
self.parent_scope.macro_rules = macro_rules_scope;
347+
self.all_macro_rules.insert(item.ident.name, res);
344348
}
345349
_ => {}
346350
}

0 commit comments

Comments
 (0)