Skip to content

Commit ebdfc93

Browse files
committed
Replace Substitution::type_params
1 parent a4d7bdf commit ebdfc93

File tree

6 files changed

+15
-16
lines changed

6 files changed

+15
-16
lines changed

crates/hir/src/display.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use syntax::ast::{self, NameOwner};
1313

1414
use crate::{
1515
Adt, Const, ConstParam, Enum, Field, Function, GenericParam, HasVisibility, LifetimeParam,
16-
Module, Static, Struct, Substitution, Trait, Type, TypeAlias, TypeParam, Union, Variant,
16+
Module, Static, Struct, Trait, TyBuilder, Type, TypeAlias, TypeParam, Union, Variant,
1717
};
1818

1919
impl HirDisplay for Function {
@@ -234,7 +234,7 @@ impl HirDisplay for TypeParam {
234234
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
235235
write!(f, "{}", self.name(f.db))?;
236236
let bounds = f.db.generic_predicates_for_param(self.id);
237-
let substs = Substitution::type_params(f.db, self.id.parent);
237+
let substs = TyBuilder::type_params_subst(f.db, self.id.parent);
238238
let predicates = bounds.iter().cloned().map(|b| b.subst(&substs)).collect::<Vec<_>>();
239239
if !(predicates.is_empty() || f.omit_verbose_types()) {
240240
write_bounds_like_dyn_trait_with_prefix(":", &predicates, f)?;

crates/hir/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ impl Field {
514514
VariantDef::Union(it) => it.id.into(),
515515
VariantDef::Variant(it) => it.parent.id.into(),
516516
};
517-
let substs = Substitution::type_params(db, generic_def_id);
517+
let substs = TyBuilder::type_params_subst(db, generic_def_id);
518518
let ty = db.field_types(var_id)[self.id].clone().subst(&substs);
519519
Type::new(db, self.parent.module(db).id.krate(), var_id, ty)
520520
}
@@ -1501,7 +1501,7 @@ impl TypeParam {
15011501
let resolver = self.id.parent.resolver(db.upcast());
15021502
let krate = self.id.parent.module(db.upcast()).krate();
15031503
let ty = params.get(local_idx)?.clone();
1504-
let subst = Substitution::type_params(db, self.id.parent);
1504+
let subst = TyBuilder::type_params_subst(db, self.id.parent);
15051505
let ty = ty.subst(&subst.prefix(local_idx));
15061506
Some(Type::new_with_resolver_inner(db, krate, &resolver, ty))
15071507
}

crates/hir_ty/src/builder.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ impl TyBuilder<()> {
9999
}
100100
}
101101

102+
pub fn type_params_subst(db: &dyn HirDatabase, def: impl Into<GenericDefId>) -> Substitution {
103+
let params = generics(db.upcast(), def.into());
104+
params.type_params_subst(db)
105+
}
106+
102107
pub fn subst_for_def(db: &dyn HirDatabase, def: impl Into<GenericDefId>) -> TyBuilder<()> {
103108
let def = def.into();
104109
let params = generics(db.upcast(), def);

crates/hir_ty/src/display.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ use crate::{
1919
db::HirDatabase, from_assoc_type_id, from_foreign_def_id, from_placeholder_idx, primitive,
2020
to_assoc_type_id, traits::chalk::from_chalk, utils::generics, AdtId, AliasEq, AliasTy,
2121
CallableDefId, CallableSig, DomainGoal, GenericArg, ImplTraitId, Interner, Lifetime, OpaqueTy,
22-
ProjectionTy, QuantifiedWhereClause, Scalar, TraitRef, Ty, TyExt, TyKind,
23-
WhereClause,
22+
ProjectionTy, QuantifiedWhereClause, Scalar, TraitRef, Ty, TyExt, TyKind, WhereClause,
2423
};
2524

2625
pub struct HirFormatter<'a> {

crates/hir_ty/src/lib.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -462,12 +462,6 @@ impl Substitution {
462462
) -> Self {
463463
Substitution(elements.into_iter().casted(interner).collect())
464464
}
465-
466-
/// Return Substs that replace each parameter by itself (i.e. `Ty::Param`).
467-
pub fn type_params(db: &dyn HirDatabase, def: impl Into<GenericDefId>) -> Substitution {
468-
let params = generics(db.upcast(), def.into());
469-
params.type_params_subst(db)
470-
}
471465
}
472466

473467
/// Return an index of a parameter in the generic type parameter list by it's id.
@@ -944,7 +938,7 @@ impl Ty {
944938
let param_data = &generic_params.types[id.local_id];
945939
match param_data.provenance {
946940
hir_def::generics::TypeParamProvenance::ArgumentImplTrait => {
947-
let substs = Substitution::type_params(db, id.parent);
941+
let substs = TyBuilder::type_params_subst(db, id.parent);
948942
let predicates = db
949943
.generic_predicates(id.parent)
950944
.into_iter()

crates/hir_ty/src/lower.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,12 +470,13 @@ impl<'a> TyLoweringContext<'a> {
470470
TypeParamLoweringMode::Placeholder => {
471471
// if we're lowering to placeholders, we have to put
472472
// them in now
473-
let s = Substitution::type_params(
474-
self.db,
473+
let generics = generics(
474+
self.db.upcast(),
475475
self.resolver.generic_def().expect(
476476
"there should be generics if there's a generic param",
477477
),
478478
);
479+
let s = generics.type_params_subst(self.db);
479480
t.substitution.clone().subst_bound_vars(&s)
480481
}
481482
TypeParamLoweringMode::Variable => t.substitution.clone(),
@@ -963,7 +964,7 @@ pub(crate) fn trait_environment_query(
963964
// function default implementations (and hypothetical code
964965
// inside consts or type aliases)
965966
cov_mark::hit!(trait_self_implements_self);
966-
let substs = Substitution::type_params(db, trait_id);
967+
let substs = TyBuilder::type_params_subst(db, trait_id);
967968
let trait_ref = TraitRef { trait_id: to_chalk_trait_id(trait_id), substitution: substs };
968969
let pred = WhereClause::Implemented(trait_ref);
969970
let program_clause: chalk_ir::ProgramClause<Interner> = pred.to_chalk(db).cast(&Interner);

0 commit comments

Comments
 (0)