From aefcbf275804f558ab18e83bfc8869187713b4ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Mon, 5 Apr 2021 17:37:24 +0300 Subject: Pass interner to ProjectionTy::self_type_parameter --- crates/hir_ty/src/display.rs | 4 ++-- crates/hir_ty/src/lib.rs | 6 +++--- crates/hir_ty/src/traits.rs | 2 +- crates/hir_ty/src/traits/chalk/mapping.rs | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'crates/hir_ty') diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs index 5ff70c893..965476a05 100644 --- a/crates/hir_ty/src/display.rs +++ b/crates/hir_ty/src/display.rs @@ -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::>(); diff --git a/crates/hir_ty/src/lib.rs b/crates/hir_ty/src/lib.rs index d1513df1f..80dd7aaca 100644 --- a/crates/hir_ty/src/lib.rs +++ b/crates/hir_ty/src/lib.rs @@ -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(); diff --git a/crates/hir_ty/src/traits.rs b/crates/hir_ty/src/traits.rs index 66d600bfc..c8883485c 100644 --- a/crates/hir_ty/src/traits.rs +++ b/crates/hir_ty/src/traits.rs @@ -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)); } diff --git a/crates/hir_ty/src/traits/chalk/mapping.rs b/crates/hir_ty/src/traits/chalk/mapping.rs index 59aaa5560..240f9d456 100644 --- a/crates/hir_ty/src/traits/chalk/mapping.rs +++ b/crates/hir_ty/src/traits/chalk/mapping.rs @@ -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); -- cgit v1.2.3