Intern Substitutions

(Costs a bit of performance, reduces memory usage on RA by ~10%.)
This commit is contained in:
Florian Diebold 2021-04-08 18:25:18 +02:00
parent a169fa6a83
commit be03db0e3a
8 changed files with 34 additions and 27 deletions

View file

@ -462,7 +462,7 @@ impl<'a> InferenceContext<'a> {
};
match canonicalized.decanonicalize_ty(derefed_ty.value).kind(&Interner) {
TyKind::Tuple(_, substs) => name.as_tuple_index().and_then(|idx| {
substs.interned().get(idx).map(|a| a.assert_ty_ref(&Interner)).cloned()
substs.as_slice(&Interner).get(idx).map(|a| a.assert_ty_ref(&Interner)).cloned()
}),
TyKind::Adt(AdtId(hir_def::AdtId::StructId(s)), parameters) => {
let local_id = self.db.struct_data(*s).variant_data.field(name)?;