Pass interner to ProjectionTy::self_type_parameter

This commit is contained in:
Laurențiu Nicola 2021-04-05 17:37:24 +03:00
parent fab1c06646
commit aefcbf2758
4 changed files with 7 additions and 7 deletions

View File

@ -251,7 +251,7 @@ impl HirDisplay for ProjectionTy {
}
let trait_ = f.db.trait_data(self.trait_(f.db));
let first_parameter = self.self_type_parameter().into_displayable(
let first_parameter = self.self_type_parameter(&Interner).into_displayable(
f.db,
f.max_size,
f.omit_verbose_types,
@ -602,7 +602,7 @@ impl HirDisplay for Ty {
WhereClause::AliasEq(AliasEq {
alias: AliasTy::Projection(proj),
ty: _,
}) => proj.self_type_parameter() == self,
}) => proj.self_type_parameter(&Interner) == self,
_ => false,
})
.collect::<Vec<_>>();

View File

@ -78,8 +78,8 @@ impl ProjectionTy {
}
}
pub fn self_type_parameter(&self) -> &Ty {
&self.substitution.interned()[0].assert_ty_ref(&Interner)
pub fn self_type_parameter(&self, interner: &Interner) -> &Ty {
&self.substitution.interned()[0].assert_ty_ref(interner)
}
fn trait_(&self, db: &dyn HirDatabase) -> TraitId {
@ -477,7 +477,7 @@ impl Ty {
WhereClause::AliasEq(AliasEq {
alias: AliasTy::Projection(proj),
ty: _,
}) => proj.self_type_parameter() == self,
}) => proj.self_type_parameter(&Interner) == self,
_ => false,
})
.collect_vec();

View File

@ -89,7 +89,7 @@ pub(crate) fn trait_solve_query(
..
})) = &goal.value.goal
{
if let TyKind::BoundVar(_) = projection_ty.self_type_parameter().kind(&Interner) {
if let TyKind::BoundVar(_) = projection_ty.self_type_parameter(&Interner).kind(&Interner) {
// Hack: don't ask Chalk to normalize with an unknown self type, it'll say that's impossible
return Some(Solution::Ambig(Guidance::Unknown));
}

View File

@ -552,7 +552,7 @@ pub(super) fn generic_predicate_to_inline_bound(
Some(make_binders(rust_ir::InlineBound::TraitBound(trait_bound), pred.num_binders))
}
WhereClause::AliasEq(AliasEq { alias: AliasTy::Projection(projection_ty), ty }) => {
if projection_ty.self_type_parameter() != &self_ty_shifted_in {
if projection_ty.self_type_parameter(&Interner) != &self_ty_shifted_in {
return None;
}
let trait_ = projection_ty.trait_(db);