diff options
Diffstat (limited to 'crates/ra_hir_ty/src/traits')
-rw-r--r-- | crates/ra_hir_ty/src/traits/chalk/mapping.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/crates/ra_hir_ty/src/traits/chalk/mapping.rs b/crates/ra_hir_ty/src/traits/chalk/mapping.rs index 7dc9ee759..06453ef82 100644 --- a/crates/ra_hir_ty/src/traits/chalk/mapping.rs +++ b/crates/ra_hir_ty/src/traits/chalk/mapping.rs | |||
@@ -117,8 +117,12 @@ impl ToChalk for Ty { | |||
117 | let parameters = from_chalk(db, opaque_ty.substitution); | 117 | let parameters = from_chalk(db, opaque_ty.substitution); |
118 | Ty::Opaque(OpaqueTy { opaque_ty_id: impl_trait_id, parameters }) | 118 | Ty::Opaque(OpaqueTy { opaque_ty_id: impl_trait_id, parameters }) |
119 | } | 119 | } |
120 | chalk_ir::TyData::Function(chalk_ir::Fn { num_binders: _, substitution }) => { | 120 | chalk_ir::TyData::Function(chalk_ir::Fn { num_binders, substitution }) => { |
121 | let parameters: Substs = from_chalk(db, substitution); | 121 | assert_eq!(num_binders, 0); |
122 | let parameters: Substs = from_chalk( | ||
123 | db, | ||
124 | substitution.shifted_out(&Interner).expect("fn ptr should have no binders"), | ||
125 | ); | ||
122 | Ty::Apply(ApplicationTy { | 126 | Ty::Apply(ApplicationTy { |
123 | ctor: TypeCtor::FnPtr { num_args: (parameters.len() - 1) as u16 }, | 127 | ctor: TypeCtor::FnPtr { num_args: (parameters.len() - 1) as u16 }, |
124 | parameters, | 128 | parameters, |