Compute item_generics_num_lifetimes during resolution.

This commit is contained in:
Camille GILLOT 2021-07-14 18:04:56 +02:00
parent 74fb87e3a0
commit 26eeec0baf
4 changed files with 30 additions and 54 deletions

View file

@ -1030,6 +1030,8 @@ pub struct Resolver<'a> {
trait_impl_items: FxHashSet<LocalDefId>,
legacy_const_generic_args: FxHashMap<DefId, Option<Vec<usize>>>,
/// Amount of lifetime parameters for each item in the crate.
item_generics_num_lifetimes: FxHashMap<LocalDefId, usize>,
main_def: Option<MainDefinition>,
}
@ -1109,8 +1111,12 @@ impl ResolverAstLowering for Resolver<'_> {
}
}
fn item_generics_num_lifetimes(&self, def_id: DefId, sess: &Session) -> usize {
self.cstore().item_generics_num_lifetimes(def_id, sess)
fn item_generics_num_lifetimes(&self, def_id: DefId) -> usize {
if let Some(def_id) = def_id.as_local() {
self.item_generics_num_lifetimes[&def_id]
} else {
self.cstore().item_generics_num_lifetimes(def_id, self.session)
}
}
fn legacy_const_generic_args(&mut self, expr: &Expr) -> Option<Vec<usize>> {
@ -1390,6 +1396,7 @@ impl<'a> Resolver<'a> {
next_disambiguator: Default::default(),
trait_impl_items: Default::default(),
legacy_const_generic_args: Default::default(),
item_generics_num_lifetimes: Default::default(),
main_def: Default::default(),
};