diff options
Diffstat (limited to 'crates/hir_ty/src/traits/chalk')
-rw-r--r-- | crates/hir_ty/src/traits/chalk/mapping.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/crates/hir_ty/src/traits/chalk/mapping.rs b/crates/hir_ty/src/traits/chalk/mapping.rs index d969527dc..0086ce1e9 100644 --- a/crates/hir_ty/src/traits/chalk/mapping.rs +++ b/crates/hir_ty/src/traits/chalk/mapping.rs | |||
@@ -239,15 +239,15 @@ impl ToChalk for TraitRef { | |||
239 | type Chalk = chalk_ir::TraitRef<Interner>; | 239 | type Chalk = chalk_ir::TraitRef<Interner>; |
240 | 240 | ||
241 | fn to_chalk(self: TraitRef, db: &dyn HirDatabase) -> chalk_ir::TraitRef<Interner> { | 241 | fn to_chalk(self: TraitRef, db: &dyn HirDatabase) -> chalk_ir::TraitRef<Interner> { |
242 | let trait_id = self.trait_.to_chalk(db); | 242 | let trait_id = self.trait_id; |
243 | let substitution = self.substs.to_chalk(db); | 243 | let substitution = self.substitution.to_chalk(db); |
244 | chalk_ir::TraitRef { trait_id, substitution } | 244 | chalk_ir::TraitRef { trait_id, substitution } |
245 | } | 245 | } |
246 | 246 | ||
247 | fn from_chalk(db: &dyn HirDatabase, trait_ref: chalk_ir::TraitRef<Interner>) -> Self { | 247 | fn from_chalk(db: &dyn HirDatabase, trait_ref: chalk_ir::TraitRef<Interner>) -> Self { |
248 | let trait_ = from_chalk(db, trait_ref.trait_id); | 248 | let trait_id = trait_ref.trait_id; |
249 | let substs = from_chalk(db, trait_ref.substitution); | 249 | let substs = from_chalk(db, trait_ref.substitution); |
250 | TraitRef { trait_, substs } | 250 | TraitRef { trait_id, substitution: substs } |
251 | } | 251 | } |
252 | } | 252 | } |
253 | 253 | ||
@@ -515,17 +515,16 @@ pub(super) fn generic_predicate_to_inline_bound( | |||
515 | // We don't have a special type for this, but Chalk does. | 515 | // We don't have a special type for this, but Chalk does. |
516 | match pred { | 516 | match pred { |
517 | GenericPredicate::Implemented(trait_ref) => { | 517 | GenericPredicate::Implemented(trait_ref) => { |
518 | if &trait_ref.substs[0] != self_ty { | 518 | if &trait_ref.substitution[0] != self_ty { |
519 | // we can only convert predicates back to type bounds if they | 519 | // we can only convert predicates back to type bounds if they |
520 | // have the expected self type | 520 | // have the expected self type |
521 | return None; | 521 | return None; |
522 | } | 522 | } |
523 | let args_no_self = trait_ref.substs[1..] | 523 | let args_no_self = trait_ref.substitution[1..] |
524 | .iter() | 524 | .iter() |
525 | .map(|ty| ty.clone().to_chalk(db).cast(&Interner)) | 525 | .map(|ty| ty.clone().to_chalk(db).cast(&Interner)) |
526 | .collect(); | 526 | .collect(); |
527 | let trait_bound = | 527 | let trait_bound = rust_ir::TraitBound { trait_id: trait_ref.trait_id, args_no_self }; |
528 | rust_ir::TraitBound { trait_id: trait_ref.trait_.to_chalk(db), args_no_self }; | ||
529 | Some(rust_ir::InlineBound::TraitBound(trait_bound)) | 528 | Some(rust_ir::InlineBound::TraitBound(trait_bound)) |
530 | } | 529 | } |
531 | GenericPredicate::Projection(proj) => { | 530 | GenericPredicate::Projection(proj) => { |