Skip to content

Commit 1922299

Browse files
half work
1 parent 50ef086 commit 1922299

File tree

5 files changed

+446
-234
lines changed

5 files changed

+446
-234
lines changed

crates/hir-ty/src/display.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,8 @@ impl HirDisplay for ProjectionTy {
639639
),
640640
&assoc_type
641641
.bounds
642-
.skip_binders()
642+
.clone()
643+
.substitute(Interner, &self.substitution)
643644
.iter()
644645
.map(|bound| {
645646
// We ignore `Self` anyway when formatting, so it's fine put an error type in it.

crates/hir-ty/src/lower.rs

+4-14
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ use crate::{
5959
FnPointer, FnSig, FnSubst, ImplTrait, ImplTraitId, ImplTraits, Interner, Lifetime,
6060
LifetimeData, LifetimeOutlives, ParamKind, PlaceholderIndex, PolyFnSig, ProgramClause,
6161
ProjectionTy, QuantifiedWhereClause, QuantifiedWhereClauses, Substitution, TraitEnvironment,
62-
TraitRef, TraitRefExt, Ty, TyBuilder, TyKind, VariableKind, VariableKinds, WhereClause,
63-
all_super_traits,
62+
TraitRef, TraitRefExt, Ty, TyBuilder, TyKind, VariableKinds, WhereClause, all_super_traits,
6463
chalk_db::generic_predicate_to_inline_bound,
6564
consteval::{
6665
intern_const_ref, intern_const_scalar, path_to_const, unknown_const,
@@ -78,6 +77,7 @@ use crate::{
7877
rpitit::{RpititTraitAssocTy, RpititTraitAssocTyId},
7978
static_lifetime, to_chalk_trait_id, to_placeholder_idx,
8079
utils::{InTypeConstIdMetadata, all_super_trait_refs},
80+
variable_kinds_from_generics,
8181
};
8282

8383
#[derive(Debug, Default)]
@@ -390,9 +390,7 @@ impl<'a> TyLoweringContext<'a> {
390390
|a| ImplTraitId::TypeAliasImplTrait(a, idx),
391391
);
392392
let opaque_ty_id = self.db.intern_impl_trait_id(impl_trait_id).into();
393-
let generics =
394-
generics(self.db.upcast(), origin.either(|f| f.into(), |a| a.into()));
395-
let parameters = generics.bound_vars_subst(self.db, self.in_binders);
393+
let parameters = self.subst_for_generics();
396394
TyKind::OpaqueType(opaque_ty_id, parameters).intern(Interner)
397395
}
398396
ImplTraitLoweringMode::Param => {
@@ -588,15 +586,7 @@ impl<'a> TyLoweringContext<'a> {
588586

589587
let assoc_type_binders = VariableKinds::from_iter(
590588
Interner,
591-
method_generics.iter_id().map(|param_id| match param_id {
592-
GenericParamId::TypeParamId(_) => {
593-
VariableKind::Ty(chalk_ir::TyVariableKind::General)
594-
}
595-
GenericParamId::ConstParamId(param_id) => {
596-
VariableKind::Const(self.db.const_param_ty(param_id))
597-
}
598-
GenericParamId::LifetimeParamId(_) => VariableKind::Lifetime,
599-
}),
589+
variable_kinds_from_generics(self.db, method_generics.iter_id()),
600590
);
601591

602592
let returned_subst = self.subst_for_generics();

0 commit comments

Comments
 (0)