diff options
-rw-r--r-- | crates/hir/src/lib.rs | 4 | ||||
-rw-r--r-- | crates/hir_ty/src/autoderef.rs | 2 | ||||
-rw-r--r-- | crates/hir_ty/src/display.rs | 16 | ||||
-rw-r--r-- | crates/hir_ty/src/infer.rs | 4 | ||||
-rw-r--r-- | crates/hir_ty/src/infer/expr.rs | 4 | ||||
-rw-r--r-- | crates/hir_ty/src/infer/unify.rs | 6 | ||||
-rw-r--r-- | crates/hir_ty/src/lib.rs | 18 | ||||
-rw-r--r-- | crates/hir_ty/src/lower.rs | 12 | ||||
-rw-r--r-- | crates/hir_ty/src/traits.rs | 2 | ||||
-rw-r--r-- | crates/hir_ty/src/traits/chalk.rs | 4 | ||||
-rw-r--r-- | crates/hir_ty/src/traits/chalk/mapping.rs | 22 |
11 files changed, 47 insertions, 47 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 10b8171be..5e7226df2 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs | |||
@@ -1686,8 +1686,8 @@ impl Type { | |||
1686 | .build(); | 1686 | .build(); |
1687 | let predicate = ProjectionPredicate { | 1687 | let predicate = ProjectionPredicate { |
1688 | projection_ty: ProjectionTy { | 1688 | projection_ty: ProjectionTy { |
1689 | associated_ty: to_assoc_type_id(alias.id), | 1689 | associated_ty_id: to_assoc_type_id(alias.id), |
1690 | parameters: subst, | 1690 | substitution: subst, |
1691 | }, | 1691 | }, |
1692 | ty: TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0)).intern(&Interner), | 1692 | ty: TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0)).intern(&Interner), |
1693 | }; | 1693 | }; |
diff --git a/crates/hir_ty/src/autoderef.rs b/crates/hir_ty/src/autoderef.rs index d739d5d60..d5c2b9a20 100644 --- a/crates/hir_ty/src/autoderef.rs +++ b/crates/hir_ty/src/autoderef.rs | |||
@@ -84,7 +84,7 @@ fn deref_by_trait( | |||
84 | let projection = super::traits::ProjectionPredicate { | 84 | let projection = super::traits::ProjectionPredicate { |
85 | ty: TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, ty.value.kinds.len())) | 85 | ty: TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, ty.value.kinds.len())) |
86 | .intern(&Interner), | 86 | .intern(&Interner), |
87 | projection_ty: super::ProjectionTy { associated_ty: to_assoc_type_id(target), parameters }, | 87 | projection_ty: super::ProjectionTy { associated_ty_id: to_assoc_type_id(target), substitution: parameters }, |
88 | }; | 88 | }; |
89 | 89 | ||
90 | let obligation = super::Obligation::Projection(projection); | 90 | let obligation = super::Obligation::Projection(projection); |
diff --git a/crates/hir_ty/src/display.rs b/crates/hir_ty/src/display.rs index e6473586b..21291ddda 100644 --- a/crates/hir_ty/src/display.rs +++ b/crates/hir_ty/src/display.rs | |||
@@ -245,19 +245,19 @@ impl HirDisplay for ProjectionTy { | |||
245 | } | 245 | } |
246 | 246 | ||
247 | let trait_ = f.db.trait_data(self.trait_(f.db)); | 247 | let trait_ = f.db.trait_data(self.trait_(f.db)); |
248 | let first_parameter = self.parameters[0].into_displayable( | 248 | let first_parameter = self.substitution[0].into_displayable( |
249 | f.db, | 249 | f.db, |
250 | f.max_size, | 250 | f.max_size, |
251 | f.omit_verbose_types, | 251 | f.omit_verbose_types, |
252 | f.display_target, | 252 | f.display_target, |
253 | ); | 253 | ); |
254 | write!(f, "<{} as {}", first_parameter, trait_.name)?; | 254 | write!(f, "<{} as {}", first_parameter, trait_.name)?; |
255 | if self.parameters.len() > 1 { | 255 | if self.substitution.len() > 1 { |
256 | write!(f, "<")?; | 256 | write!(f, "<")?; |
257 | f.write_joined(&self.parameters[1..], ", ")?; | 257 | f.write_joined(&self.substitution[1..], ", ")?; |
258 | write!(f, ">")?; | 258 | write!(f, ">")?; |
259 | } | 259 | } |
260 | write!(f, ">::{}", f.db.type_alias_data(from_assoc_type_id(self.associated_ty)).name)?; | 260 | write!(f, ">::{}", f.db.type_alias_data(from_assoc_type_id(self.associated_ty_id)).name)?; |
261 | Ok(()) | 261 | Ok(()) |
262 | } | 262 | } |
263 | } | 263 | } |
@@ -491,8 +491,8 @@ impl HirDisplay for Ty { | |||
491 | } | 491 | } |
492 | } else { | 492 | } else { |
493 | let projection_ty = ProjectionTy { | 493 | let projection_ty = ProjectionTy { |
494 | associated_ty: to_assoc_type_id(type_alias), | 494 | associated_ty_id: to_assoc_type_id(type_alias), |
495 | parameters: parameters.clone(), | 495 | substitution: parameters.clone(), |
496 | }; | 496 | }; |
497 | 497 | ||
498 | projection_ty.hir_fmt(f)?; | 498 | projection_ty.hir_fmt(f)?; |
@@ -709,7 +709,7 @@ fn write_bounds_like_dyn_trait( | |||
709 | angle_open = true; | 709 | angle_open = true; |
710 | } | 710 | } |
711 | let type_alias = f.db.type_alias_data(from_assoc_type_id( | 711 | let type_alias = f.db.type_alias_data(from_assoc_type_id( |
712 | projection_pred.projection_ty.associated_ty, | 712 | projection_pred.projection_ty.associated_ty_id, |
713 | )); | 713 | )); |
714 | write!(f, "{} = ", type_alias.name)?; | 714 | write!(f, "{} = ", type_alias.name)?; |
715 | projection_pred.ty.hir_fmt(f)?; | 715 | projection_pred.ty.hir_fmt(f)?; |
@@ -782,7 +782,7 @@ impl HirDisplay for GenericPredicate { | |||
782 | f, | 782 | f, |
783 | ">::{} = ", | 783 | ">::{} = ", |
784 | f.db.type_alias_data(from_assoc_type_id( | 784 | f.db.type_alias_data(from_assoc_type_id( |
785 | projection_pred.projection_ty.associated_ty | 785 | projection_pred.projection_ty.associated_ty_id |
786 | )) | 786 | )) |
787 | .name, | 787 | .name, |
788 | )?; | 788 | )?; |
diff --git a/crates/hir_ty/src/infer.rs b/crates/hir_ty/src/infer.rs index 8cf59821f..fbfedb4e6 100644 --- a/crates/hir_ty/src/infer.rs +++ b/crates/hir_ty/src/infer.rs | |||
@@ -385,8 +385,8 @@ impl<'a> InferenceContext<'a> { | |||
385 | let projection = ProjectionPredicate { | 385 | let projection = ProjectionPredicate { |
386 | ty: ty.clone(), | 386 | ty: ty.clone(), |
387 | projection_ty: ProjectionTy { | 387 | projection_ty: ProjectionTy { |
388 | associated_ty: to_assoc_type_id(res_assoc_ty), | 388 | associated_ty_id: to_assoc_type_id(res_assoc_ty), |
389 | parameters: substs, | 389 | substitution: substs, |
390 | }, | 390 | }, |
391 | }; | 391 | }; |
392 | self.obligations.push(Obligation::Trait(trait_ref)); | 392 | self.obligations.push(Obligation::Trait(trait_ref)); |
diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index eee3e6ec5..b7870e771 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs | |||
@@ -99,8 +99,8 @@ impl<'a> InferenceContext<'a> { | |||
99 | if self.db.trait_solve(krate, goal.value).is_some() { | 99 | if self.db.trait_solve(krate, goal.value).is_some() { |
100 | self.obligations.push(implements_fn_trait); | 100 | self.obligations.push(implements_fn_trait); |
101 | let output_proj_ty = crate::ProjectionTy { | 101 | let output_proj_ty = crate::ProjectionTy { |
102 | associated_ty: to_assoc_type_id(output_assoc_type), | 102 | associated_ty_id: to_assoc_type_id(output_assoc_type), |
103 | parameters: substs, | 103 | substitution: substs, |
104 | }; | 104 | }; |
105 | let return_ty = self.normalize_projection_ty(output_proj_ty); | 105 | let return_ty = self.normalize_projection_ty(output_proj_ty); |
106 | Some((arg_tys, return_ty)) | 106 | Some((arg_tys, return_ty)) |
diff --git a/crates/hir_ty/src/infer/unify.rs b/crates/hir_ty/src/infer/unify.rs index 16d89ed1b..ebc612ca9 100644 --- a/crates/hir_ty/src/infer/unify.rs +++ b/crates/hir_ty/src/infer/unify.rs | |||
@@ -381,11 +381,11 @@ impl InferenceTable { | |||
381 | self.unify_substs(&tr1.substs, &tr2.substs, depth + 1) | 381 | self.unify_substs(&tr1.substs, &tr2.substs, depth + 1) |
382 | } | 382 | } |
383 | (GenericPredicate::Projection(proj1), GenericPredicate::Projection(proj2)) | 383 | (GenericPredicate::Projection(proj1), GenericPredicate::Projection(proj2)) |
384 | if proj1.projection_ty.associated_ty == proj2.projection_ty.associated_ty => | 384 | if proj1.projection_ty.associated_ty_id == proj2.projection_ty.associated_ty_id => |
385 | { | 385 | { |
386 | self.unify_substs( | 386 | self.unify_substs( |
387 | &proj1.projection_ty.parameters, | 387 | &proj1.projection_ty.substitution, |
388 | &proj2.projection_ty.parameters, | 388 | &proj2.projection_ty.substitution, |
389 | depth + 1, | 389 | depth + 1, |
390 | ) && self.unify_inner(&proj1.ty, &proj2.ty, depth + 1) | 390 | ) && self.unify_inner(&proj1.ty, &proj2.ty, depth + 1) |
391 | } | 391 | } |
diff --git a/crates/hir_ty/src/lib.rs b/crates/hir_ty/src/lib.rs index d6ff968f0..ddcee2084 100644 --- a/crates/hir_ty/src/lib.rs +++ b/crates/hir_ty/src/lib.rs | |||
@@ -74,17 +74,17 @@ pub struct OpaqueTy { | |||
74 | /// trait and all its parameters are fully known. | 74 | /// trait and all its parameters are fully known. |
75 | #[derive(Clone, PartialEq, Eq, Debug, Hash)] | 75 | #[derive(Clone, PartialEq, Eq, Debug, Hash)] |
76 | pub struct ProjectionTy { | 76 | pub struct ProjectionTy { |
77 | pub associated_ty: AssocTypeId, | 77 | pub associated_ty_id: AssocTypeId, |
78 | pub parameters: Substs, | 78 | pub substitution: Substs, |
79 | } | 79 | } |
80 | 80 | ||
81 | impl ProjectionTy { | 81 | impl ProjectionTy { |
82 | pub fn trait_ref(&self, db: &dyn HirDatabase) -> TraitRef { | 82 | pub fn trait_ref(&self, db: &dyn HirDatabase) -> TraitRef { |
83 | TraitRef { trait_: self.trait_(db), substs: self.parameters.clone() } | 83 | TraitRef { trait_: self.trait_(db), substs: self.substitution.clone() } |
84 | } | 84 | } |
85 | 85 | ||
86 | fn trait_(&self, db: &dyn HirDatabase) -> TraitId { | 86 | fn trait_(&self, db: &dyn HirDatabase) -> TraitId { |
87 | match from_assoc_type_id(self.associated_ty).lookup(db.upcast()).container { | 87 | match from_assoc_type_id(self.associated_ty_id).lookup(db.upcast()).container { |
88 | AssocContainerId::TraitId(it) => it, | 88 | AssocContainerId::TraitId(it) => it, |
89 | _ => panic!("projection ty without parent trait"), | 89 | _ => panic!("projection ty without parent trait"), |
90 | } | 90 | } |
@@ -93,7 +93,7 @@ impl ProjectionTy { | |||
93 | 93 | ||
94 | impl TypeWalk for ProjectionTy { | 94 | impl TypeWalk for ProjectionTy { |
95 | fn walk(&self, f: &mut impl FnMut(&Ty)) { | 95 | fn walk(&self, f: &mut impl FnMut(&Ty)) { |
96 | self.parameters.walk(f); | 96 | self.substitution.walk(f); |
97 | } | 97 | } |
98 | 98 | ||
99 | fn walk_mut_binders( | 99 | fn walk_mut_binders( |
@@ -101,7 +101,7 @@ impl TypeWalk for ProjectionTy { | |||
101 | f: &mut impl FnMut(&mut Ty, DebruijnIndex), | 101 | f: &mut impl FnMut(&mut Ty, DebruijnIndex), |
102 | binders: DebruijnIndex, | 102 | binders: DebruijnIndex, |
103 | ) { | 103 | ) { |
104 | self.parameters.walk_mut_binders(f, binders); | 104 | self.substitution.walk_mut_binders(f, binders); |
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
@@ -945,7 +945,7 @@ impl Ty { | |||
945 | } | 945 | } |
946 | } | 946 | } |
947 | TyKind::Alias(AliasTy::Projection(projection_ty)) => { | 947 | TyKind::Alias(AliasTy::Projection(projection_ty)) => { |
948 | match from_assoc_type_id(projection_ty.associated_ty).lookup(db.upcast()).container | 948 | match from_assoc_type_id(projection_ty.associated_ty_id).lookup(db.upcast()).container |
949 | { | 949 | { |
950 | AssocContainerId::TraitId(trait_id) => Some(trait_id), | 950 | AssocContainerId::TraitId(trait_id) => Some(trait_id), |
951 | _ => None, | 951 | _ => None, |
@@ -1055,7 +1055,7 @@ impl TypeWalk for Ty { | |||
1055 | fn walk(&self, f: &mut impl FnMut(&Ty)) { | 1055 | fn walk(&self, f: &mut impl FnMut(&Ty)) { |
1056 | match self.interned(&Interner) { | 1056 | match self.interned(&Interner) { |
1057 | TyKind::Alias(AliasTy::Projection(p_ty)) => { | 1057 | TyKind::Alias(AliasTy::Projection(p_ty)) => { |
1058 | for t in p_ty.parameters.iter() { | 1058 | for t in p_ty.substitution.iter() { |
1059 | t.walk(f); | 1059 | t.walk(f); |
1060 | } | 1060 | } |
1061 | } | 1061 | } |
@@ -1087,7 +1087,7 @@ impl TypeWalk for Ty { | |||
1087 | ) { | 1087 | ) { |
1088 | match &mut self.0 { | 1088 | match &mut self.0 { |
1089 | TyKind::Alias(AliasTy::Projection(p_ty)) => { | 1089 | TyKind::Alias(AliasTy::Projection(p_ty)) => { |
1090 | p_ty.parameters.walk_mut_binders(f, binders); | 1090 | p_ty.substitution.walk_mut_binders(f, binders); |
1091 | } | 1091 | } |
1092 | TyKind::Dyn(predicates) => { | 1092 | TyKind::Dyn(predicates) => { |
1093 | for p in make_mut_slice(predicates) { | 1093 | for p in make_mut_slice(predicates) { |
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs index c32dca9d7..17eb29911 100644 --- a/crates/hir_ty/src/lower.rs +++ b/crates/hir_ty/src/lower.rs | |||
@@ -357,8 +357,8 @@ impl<'a> TyLoweringContext<'a> { | |||
357 | Some((super_trait_ref, associated_ty)) => { | 357 | Some((super_trait_ref, associated_ty)) => { |
358 | // FIXME handle type parameters on the segment | 358 | // FIXME handle type parameters on the segment |
359 | TyKind::Alias(AliasTy::Projection(ProjectionTy { | 359 | TyKind::Alias(AliasTy::Projection(ProjectionTy { |
360 | associated_ty: to_assoc_type_id(associated_ty), | 360 | associated_ty_id: to_assoc_type_id(associated_ty), |
361 | parameters: super_trait_ref.substs, | 361 | substitution: super_trait_ref.substs, |
362 | })) | 362 | })) |
363 | .intern(&Interner) | 363 | .intern(&Interner) |
364 | } | 364 | } |
@@ -478,8 +478,8 @@ impl<'a> TyLoweringContext<'a> { | |||
478 | // FIXME handle type parameters on the segment | 478 | // FIXME handle type parameters on the segment |
479 | return Some( | 479 | return Some( |
480 | TyKind::Alias(AliasTy::Projection(ProjectionTy { | 480 | TyKind::Alias(AliasTy::Projection(ProjectionTy { |
481 | associated_ty: to_assoc_type_id(associated_ty), | 481 | associated_ty_id: to_assoc_type_id(associated_ty), |
482 | parameters: substs, | 482 | substitution: substs, |
483 | })) | 483 | })) |
484 | .intern(&Interner), | 484 | .intern(&Interner), |
485 | ); | 485 | ); |
@@ -736,8 +736,8 @@ impl<'a> TyLoweringContext<'a> { | |||
736 | Some(t) => t, | 736 | Some(t) => t, |
737 | }; | 737 | }; |
738 | let projection_ty = ProjectionTy { | 738 | let projection_ty = ProjectionTy { |
739 | associated_ty: to_assoc_type_id(associated_ty), | 739 | associated_ty_id: to_assoc_type_id(associated_ty), |
740 | parameters: super_trait_ref.substs, | 740 | substitution: super_trait_ref.substs, |
741 | }; | 741 | }; |
742 | let mut preds = SmallVec::with_capacity( | 742 | let mut preds = SmallVec::with_capacity( |
743 | binding.type_ref.as_ref().map_or(0, |_| 1) + binding.bounds.len(), | 743 | binding.type_ref.as_ref().map_or(0, |_| 1) + binding.bounds.len(), |
diff --git a/crates/hir_ty/src/traits.rs b/crates/hir_ty/src/traits.rs index edfafdff8..a6a63c673 100644 --- a/crates/hir_ty/src/traits.rs +++ b/crates/hir_ty/src/traits.rs | |||
@@ -143,7 +143,7 @@ pub(crate) fn trait_solve_query( | |||
143 | log::info!("trait_solve_query({})", goal.value.value.display(db)); | 143 | log::info!("trait_solve_query({})", goal.value.value.display(db)); |
144 | 144 | ||
145 | if let Obligation::Projection(pred) = &goal.value.value { | 145 | if let Obligation::Projection(pred) = &goal.value.value { |
146 | if let TyKind::BoundVar(_) = &pred.projection_ty.parameters[0].interned(&Interner) { | 146 | if let TyKind::BoundVar(_) = &pred.projection_ty.substitution[0].interned(&Interner) { |
147 | // Hack: don't ask Chalk to normalize with an unknown self type, it'll say that's impossible | 147 | // Hack: don't ask Chalk to normalize with an unknown self type, it'll say that's impossible |
148 | return Some(Solution::Ambig(Guidance::Unknown)); | 148 | return Some(Solution::Ambig(Guidance::Unknown)); |
149 | } | 149 | } |
diff --git a/crates/hir_ty/src/traits/chalk.rs b/crates/hir_ty/src/traits/chalk.rs index ef1e6b2df..232cf9cd0 100644 --- a/crates/hir_ty/src/traits/chalk.rs +++ b/crates/hir_ty/src/traits/chalk.rs | |||
@@ -234,9 +234,9 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> { | |||
234 | ty: TyKind::BoundVar(BoundVar { debruijn: DebruijnIndex::ONE, index: 0 }) | 234 | ty: TyKind::BoundVar(BoundVar { debruijn: DebruijnIndex::ONE, index: 0 }) |
235 | .intern(&Interner), | 235 | .intern(&Interner), |
236 | projection_ty: ProjectionTy { | 236 | projection_ty: ProjectionTy { |
237 | associated_ty: to_assoc_type_id(future_output), | 237 | associated_ty_id: to_assoc_type_id(future_output), |
238 | // Self type as the first parameter. | 238 | // Self type as the first parameter. |
239 | parameters: Substs::single( | 239 | substitution: Substs::single( |
240 | TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0)) | 240 | TyKind::BoundVar(BoundVar::new(DebruijnIndex::INNERMOST, 0)) |
241 | .intern(&Interner), | 241 | .intern(&Interner), |
242 | ), | 242 | ), |
diff --git a/crates/hir_ty/src/traits/chalk/mapping.rs b/crates/hir_ty/src/traits/chalk/mapping.rs index 2a66a2310..68effbbf3 100644 --- a/crates/hir_ty/src/traits/chalk/mapping.rs +++ b/crates/hir_ty/src/traits/chalk/mapping.rs | |||
@@ -78,8 +78,8 @@ impl ToChalk for Ty { | |||
78 | chalk_ir::TyKind::Adt(adt_id, substitution).intern(&Interner) | 78 | chalk_ir::TyKind::Adt(adt_id, substitution).intern(&Interner) |
79 | } | 79 | } |
80 | TyKind::Alias(AliasTy::Projection(proj_ty)) => { | 80 | TyKind::Alias(AliasTy::Projection(proj_ty)) => { |
81 | let associated_ty_id = proj_ty.associated_ty; | 81 | let associated_ty_id = proj_ty.associated_ty_id; |
82 | let substitution = proj_ty.parameters.to_chalk(db); | 82 | let substitution = proj_ty.substitution.to_chalk(db); |
83 | chalk_ir::AliasTy::Projection(chalk_ir::ProjectionTy { | 83 | chalk_ir::AliasTy::Projection(chalk_ir::ProjectionTy { |
84 | associated_ty_id, | 84 | associated_ty_id, |
85 | substitution, | 85 | substitution, |
@@ -121,7 +121,7 @@ impl ToChalk for Ty { | |||
121 | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Projection(proj)) => { | 121 | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Projection(proj)) => { |
122 | let associated_ty = proj.associated_ty_id; | 122 | let associated_ty = proj.associated_ty_id; |
123 | let parameters = from_chalk(db, proj.substitution); | 123 | let parameters = from_chalk(db, proj.substitution); |
124 | TyKind::Alias(AliasTy::Projection(ProjectionTy { associated_ty, parameters })) | 124 | TyKind::Alias(AliasTy::Projection(ProjectionTy { associated_ty_id: associated_ty, substitution: parameters })) |
125 | } | 125 | } |
126 | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Opaque(opaque_ty)) => { | 126 | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Opaque(opaque_ty)) => { |
127 | let opaque_ty_id = opaque_ty.opaque_ty_id; | 127 | let opaque_ty_id = opaque_ty.opaque_ty_id; |
@@ -372,8 +372,8 @@ impl ToChalk for ProjectionTy { | |||
372 | 372 | ||
373 | fn to_chalk(self, db: &dyn HirDatabase) -> chalk_ir::ProjectionTy<Interner> { | 373 | fn to_chalk(self, db: &dyn HirDatabase) -> chalk_ir::ProjectionTy<Interner> { |
374 | chalk_ir::ProjectionTy { | 374 | chalk_ir::ProjectionTy { |
375 | associated_ty_id: self.associated_ty, | 375 | associated_ty_id: self.associated_ty_id, |
376 | substitution: self.parameters.to_chalk(db), | 376 | substitution: self.substitution.to_chalk(db), |
377 | } | 377 | } |
378 | } | 378 | } |
379 | 379 | ||
@@ -382,8 +382,8 @@ impl ToChalk for ProjectionTy { | |||
382 | projection_ty: chalk_ir::ProjectionTy<Interner>, | 382 | projection_ty: chalk_ir::ProjectionTy<Interner>, |
383 | ) -> ProjectionTy { | 383 | ) -> ProjectionTy { |
384 | ProjectionTy { | 384 | ProjectionTy { |
385 | associated_ty: projection_ty.associated_ty_id, | 385 | associated_ty_id: projection_ty.associated_ty_id, |
386 | parameters: from_chalk(db, projection_ty.substitution), | 386 | substitution: from_chalk(db, projection_ty.substitution), |
387 | } | 387 | } |
388 | } | 388 | } |
389 | } | 389 | } |
@@ -533,24 +533,24 @@ pub(super) fn generic_predicate_to_inline_bound( | |||
533 | Some(rust_ir::InlineBound::TraitBound(trait_bound)) | 533 | Some(rust_ir::InlineBound::TraitBound(trait_bound)) |
534 | } | 534 | } |
535 | GenericPredicate::Projection(proj) => { | 535 | GenericPredicate::Projection(proj) => { |
536 | if &proj.projection_ty.parameters[0] != self_ty { | 536 | if &proj.projection_ty.substitution[0] != self_ty { |
537 | return None; | 537 | return None; |
538 | } | 538 | } |
539 | let trait_ = match from_assoc_type_id(proj.projection_ty.associated_ty) | 539 | let trait_ = match from_assoc_type_id(proj.projection_ty.associated_ty_id) |
540 | .lookup(db.upcast()) | 540 | .lookup(db.upcast()) |
541 | .container | 541 | .container |
542 | { | 542 | { |
543 | AssocContainerId::TraitId(t) => t, | 543 | AssocContainerId::TraitId(t) => t, |
544 | _ => panic!("associated type not in trait"), | 544 | _ => panic!("associated type not in trait"), |
545 | }; | 545 | }; |
546 | let args_no_self = proj.projection_ty.parameters[1..] | 546 | let args_no_self = proj.projection_ty.substitution[1..] |
547 | .iter() | 547 | .iter() |
548 | .map(|ty| ty.clone().to_chalk(db).cast(&Interner)) | 548 | .map(|ty| ty.clone().to_chalk(db).cast(&Interner)) |
549 | .collect(); | 549 | .collect(); |
550 | let alias_eq_bound = rust_ir::AliasEqBound { | 550 | let alias_eq_bound = rust_ir::AliasEqBound { |
551 | value: proj.ty.clone().to_chalk(db), | 551 | value: proj.ty.clone().to_chalk(db), |
552 | trait_bound: rust_ir::TraitBound { trait_id: trait_.to_chalk(db), args_no_self }, | 552 | trait_bound: rust_ir::TraitBound { trait_id: trait_.to_chalk(db), args_no_self }, |
553 | associated_ty_id: proj.projection_ty.associated_ty, | 553 | associated_ty_id: proj.projection_ty.associated_ty_id, |
554 | parameters: Vec::new(), // FIXME we don't support generic associated types yet | 554 | parameters: Vec::new(), // FIXME we don't support generic associated types yet |
555 | }; | 555 | }; |
556 | Some(rust_ir::InlineBound::AliasEqBound(alias_eq_bound)) | 556 | Some(rust_ir::InlineBound::AliasEqBound(alias_eq_bound)) |