Skip to content

Commit bd4f6f0

Browse files
committed
Move next_disambiguator to Resolver
1 parent 1d3f49f commit bd4f6f0

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

src/librustc_hir/definitions.rs

+2-10
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ pub struct Definitions {
8787
parent_modules_of_macro_defs: FxHashMap<ExpnId, DefId>,
8888
/// Item with a given `LocalDefId` was defined during macro expansion with ID `ExpnId`.
8989
expansions_that_defined: FxHashMap<LocalDefId, ExpnId>,
90-
next_disambiguator: FxHashMap<(LocalDefId, DefPathData), u32>,
9190
}
9291

9392
/// A unique identifier that we can use to lookup a definition
@@ -350,7 +349,6 @@ impl Definitions {
350349
def_id_to_hir_id: Default::default(),
351350
hir_id_to_def_id: Default::default(),
352351
expansions_that_defined: Default::default(),
353-
next_disambiguator: Default::default(),
354352
parent_modules_of_macro_defs: Default::default(),
355353
}
356354
}
@@ -366,20 +364,14 @@ impl Definitions {
366364
parent: LocalDefId,
367365
data: DefPathData,
368366
expn_id: ExpnId,
367+
mut next_disambiguator: impl FnMut(LocalDefId, DefPathData) -> u32,
369368
) -> LocalDefId {
370369
debug!("create_def(parent={:?}, data={:?}, expn_id={:?})", parent, data, expn_id);
371370

372371
// The root node must be created with `create_root_def()`.
373372
assert!(data != DefPathData::CrateRoot);
374373

375-
// Find the next free disambiguator for this key.
376-
let disambiguator = {
377-
let next_disamb = self.next_disambiguator.entry((parent, data)).or_insert(0);
378-
let disambiguator = *next_disamb;
379-
*next_disamb = next_disamb.checked_add(1).expect("disambiguator overflow");
380-
disambiguator
381-
};
382-
374+
let disambiguator = next_disambiguator(parent, data);
383375
let key = DefKey {
384376
parent: Some(parent.local_def_index),
385377
disambiguated_data: DisambiguatedDefPathData { data, disambiguator },

src/librustc_resolve/lib.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,8 @@ pub struct Resolver<'a> {
982982
/// When collecting definitions from an AST fragment produced by a macro invocation `ExpnId`
983983
/// we know what parent node that fragment should be attached to thanks to this table.
984984
invocation_parents: FxHashMap<ExpnId, LocalDefId>,
985+
986+
next_disambiguator: FxHashMap<(LocalDefId, DefPathData), u32>,
985987
}
986988

987989
/// Nothing really interesting here; it just provides memory for the rest of the crate.
@@ -1142,7 +1144,16 @@ impl ResolverAstLowering for Resolver<'_> {
11421144
self.definitions.def_key(self.node_id_to_def_id[&node_id]),
11431145
);
11441146

1145-
let def_id = self.definitions.create_def(parent, data, expn_id);
1147+
// Find the next free disambiguator for this key.
1148+
let next_disambiguator = &mut self.next_disambiguator;
1149+
let next_disambiguator = |parent, data| {
1150+
let next_disamb = next_disambiguator.entry((parent, data)).or_insert(0);
1151+
let disambiguator = *next_disamb;
1152+
*next_disamb = next_disamb.checked_add(1).expect("disambiguator overflow");
1153+
disambiguator
1154+
};
1155+
1156+
let def_id = self.definitions.create_def(parent, data, expn_id, next_disambiguator);
11461157

11471158
assert_eq!(self.def_id_to_span.push(span), def_id);
11481159

@@ -1322,6 +1333,7 @@ impl<'a> Resolver<'a> {
13221333
def_id_to_node_id,
13231334
placeholder_field_indices: Default::default(),
13241335
invocation_parents,
1336+
next_disambiguator: Default::default(),
13251337
}
13261338
}
13271339

0 commit comments

Comments
 (0)