From b67148daea86d85d211c4243f22635d6ac7e1983 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Mon, 5 Apr 2021 21:56:40 +0200 Subject: Substitution::prefix -> subst_prefix I probably want to get rid of this function completely later. --- crates/hir_ty/src/display.rs | 10 ++++++---- crates/hir_ty/src/infer/expr.rs | 6 ++++-- crates/hir_ty/src/lib.rs | 7 +++---- 3 files changed, 13 insertions(+), 10 deletions(-) (limited to 'crates/hir_ty') diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs index 91d657ce2..4ef8024d0 100644 --- a/crates/hir_ty/src/display.rs +++ b/crates/hir_ty/src/display.rs @@ -19,7 +19,7 @@ use hir_expand::name::Name; use crate::{ db::HirDatabase, from_assoc_type_id, from_foreign_def_id, from_placeholder_idx, - lt_from_placeholder_idx, primitive, to_assoc_type_id, traits::chalk::from_chalk, + lt_from_placeholder_idx, primitive, subst_prefix, to_assoc_type_id, traits::chalk::from_chalk, utils::generics, AdtId, AliasEq, AliasTy, CallableDefId, CallableSig, DomainGoal, GenericArg, ImplTraitId, Interner, Lifetime, LifetimeData, LifetimeOutlives, Mutability, OpaqueTy, ProjectionTy, ProjectionTyExt, QuantifiedWhereClause, Scalar, TraitRef, Ty, TyExt, TyKind, @@ -484,9 +484,11 @@ impl HirDisplay for Ty { default_from = i + 1; } (_, Some(default_parameter)) => { - let actual_default = default_parameter - .clone() - .substitute(&Interner, ¶meters.prefix(i)); + let actual_default = + default_parameter.clone().substitute( + &Interner, + &subst_prefix(parameters, i), + ); if parameter.assert_ty_ref(&Interner) != &actual_default { default_from = i + 1; diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 82ab9c5fe..185a2dfc3 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs @@ -964,8 +964,10 @@ impl<'a> InferenceContext<'a> { if let AssocContainerId::TraitId(trait_) = f.lookup(self.db.upcast()).container { // construct a TraitRef - let substs = - parameters.prefix(generics(self.db.upcast(), trait_.into()).len()); + let substs = crate::subst_prefix( + &*parameters, + generics(self.db.upcast(), trait_.into()).len(), + ); self.push_obligation( TraitRef { trait_id: to_chalk_trait_id(trait_), substitution: substs } .cast(&Interner), diff --git a/crates/hir_ty/src/lib.rs b/crates/hir_ty/src/lib.rs index abdcf8829..f74b22b58 100644 --- a/crates/hir_ty/src/lib.rs +++ b/crates/hir_ty/src/lib.rs @@ -75,10 +75,9 @@ pub type ChalkTraitId = chalk_ir::TraitId; pub type FnSig = chalk_ir::FnSig; -impl Substitution { - pub fn prefix(&self, n: usize) -> Substitution { - Substitution::intern(self.interned()[..std::cmp::min(self.len(&Interner), n)].into()) - } +// FIXME: get rid of this +pub fn subst_prefix(s: &Substitution, n: usize) -> Substitution { + Substitution::intern(s.interned()[..std::cmp::min(s.len(&Interner), n)].into()) } /// Return an index of a parameter in the generic type parameter list by it's id. -- cgit v1.2.3