Skip to content

Commit b67148d

Browse files
committed
Substitution::prefix -> subst_prefix
I probably want to get rid of this function completely later.
1 parent 2a83645 commit b67148d

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

crates/hir/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ use hir_ty::{
5555
autoderef, could_unify,
5656
method_resolution::{self, TyFingerprint},
5757
primitive::UintTy,
58+
subst_prefix,
5859
traits::FnTrait,
5960
AliasEq, AliasTy, BoundVar, CallableDefId, CallableSig, Canonical, CanonicalVarKinds, Cast,
6061
DebruijnIndex, InEnvironment, Interner, QuantifiedWhereClause, Scalar, Solution,
@@ -1503,7 +1504,7 @@ impl TypeParam {
15031504
let krate = self.id.parent.module(db.upcast()).krate();
15041505
let ty = params.get(local_idx)?.clone();
15051506
let subst = TyBuilder::type_params_subst(db, self.id.parent);
1506-
let ty = ty.substitute(&Interner, &subst.prefix(local_idx));
1507+
let ty = ty.substitute(&Interner, &subst_prefix(&subst, local_idx));
15071508
Some(Type::new_with_resolver_inner(db, krate, &resolver, ty))
15081509
}
15091510
}

crates/hir_ty/src/display.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use hir_expand::name::Name;
1919

2020
use crate::{
2121
db::HirDatabase, from_assoc_type_id, from_foreign_def_id, from_placeholder_idx,
22-
lt_from_placeholder_idx, primitive, to_assoc_type_id, traits::chalk::from_chalk,
22+
lt_from_placeholder_idx, primitive, subst_prefix, to_assoc_type_id, traits::chalk::from_chalk,
2323
utils::generics, AdtId, AliasEq, AliasTy, CallableDefId, CallableSig, DomainGoal, GenericArg,
2424
ImplTraitId, Interner, Lifetime, LifetimeData, LifetimeOutlives, Mutability, OpaqueTy,
2525
ProjectionTy, ProjectionTyExt, QuantifiedWhereClause, Scalar, TraitRef, Ty, TyExt, TyKind,
@@ -484,9 +484,11 @@ impl HirDisplay for Ty {
484484
default_from = i + 1;
485485
}
486486
(_, Some(default_parameter)) => {
487-
let actual_default = default_parameter
488-
.clone()
489-
.substitute(&Interner, &parameters.prefix(i));
487+
let actual_default =
488+
default_parameter.clone().substitute(
489+
&Interner,
490+
&subst_prefix(parameters, i),
491+
);
490492
if parameter.assert_ty_ref(&Interner) != &actual_default
491493
{
492494
default_from = i + 1;

crates/hir_ty/src/infer/expr.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -964,8 +964,10 @@ impl<'a> InferenceContext<'a> {
964964
if let AssocContainerId::TraitId(trait_) = f.lookup(self.db.upcast()).container
965965
{
966966
// construct a TraitRef
967-
let substs =
968-
parameters.prefix(generics(self.db.upcast(), trait_.into()).len());
967+
let substs = crate::subst_prefix(
968+
&*parameters,
969+
generics(self.db.upcast(), trait_.into()).len(),
970+
);
969971
self.push_obligation(
970972
TraitRef { trait_id: to_chalk_trait_id(trait_), substitution: substs }
971973
.cast(&Interner),

crates/hir_ty/src/lib.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,9 @@ pub type ChalkTraitId = chalk_ir::TraitId<Interner>;
7575

7676
pub type FnSig = chalk_ir::FnSig<Interner>;
7777

78-
impl Substitution {
79-
pub fn prefix(&self, n: usize) -> Substitution {
80-
Substitution::intern(self.interned()[..std::cmp::min(self.len(&Interner), n)].into())
81-
}
78+
// FIXME: get rid of this
79+
pub fn subst_prefix(s: &Substitution, n: usize) -> Substitution {
80+
Substitution::intern(s.interned()[..std::cmp::min(s.len(&Interner), n)].into())
8281
}
8382

8483
/// Return an index of a parameter in the generic type parameter list by it's id.

0 commit comments

Comments
 (0)