diff options
Diffstat (limited to 'crates/hir_ty/src/traits/chalk')
-rw-r--r-- | crates/hir_ty/src/traits/chalk/mapping.rs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/crates/hir_ty/src/traits/chalk/mapping.rs b/crates/hir_ty/src/traits/chalk/mapping.rs index 68effbbf3..1a6fca611 100644 --- a/crates/hir_ty/src/traits/chalk/mapping.rs +++ b/crates/hir_ty/src/traits/chalk/mapping.rs | |||
@@ -14,7 +14,7 @@ use crate::{ | |||
14 | from_assoc_type_id, | 14 | from_assoc_type_id, |
15 | primitive::UintTy, | 15 | primitive::UintTy, |
16 | traits::{Canonical, Obligation}, | 16 | traits::{Canonical, Obligation}, |
17 | AliasTy, CallableDefId, FnPointer, FnSig, GenericPredicate, InEnvironment, OpaqueTy, | 17 | AliasTy, CallableDefId, FnPointer, GenericPredicate, InEnvironment, OpaqueTy, |
18 | ProjectionPredicate, ProjectionTy, Scalar, Substs, TraitRef, Ty, | 18 | ProjectionPredicate, ProjectionTy, Scalar, Substs, TraitRef, Ty, |
19 | }; | 19 | }; |
20 | 20 | ||
@@ -27,11 +27,11 @@ impl ToChalk for Ty { | |||
27 | match self.0 { | 27 | match self.0 { |
28 | TyKind::Ref(m, parameters) => ref_to_chalk(db, m, parameters), | 28 | TyKind::Ref(m, parameters) => ref_to_chalk(db, m, parameters), |
29 | TyKind::Array(parameters) => array_to_chalk(db, parameters), | 29 | TyKind::Array(parameters) => array_to_chalk(db, parameters), |
30 | TyKind::Function(FnPointer { sig: FnSig { variadic }, substs, .. }) => { | 30 | TyKind::Function(FnPointer { sig, substs, .. }) => { |
31 | let substitution = chalk_ir::FnSubst(substs.to_chalk(db).shifted_in(&Interner)); | 31 | let substitution = chalk_ir::FnSubst(substs.to_chalk(db).shifted_in(&Interner)); |
32 | chalk_ir::TyKind::Function(chalk_ir::FnPointer { | 32 | chalk_ir::TyKind::Function(chalk_ir::FnPointer { |
33 | num_binders: 0, | 33 | num_binders: 0, |
34 | sig: chalk_ir::FnSig { abi: (), safety: chalk_ir::Safety::Safe, variadic }, | 34 | sig, |
35 | substitution, | 35 | substitution, |
36 | }) | 36 | }) |
37 | .intern(&Interner) | 37 | .intern(&Interner) |
@@ -121,7 +121,10 @@ 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_id: associated_ty, substitution: parameters })) | 124 | TyKind::Alias(AliasTy::Projection(ProjectionTy { |
125 | associated_ty_id: associated_ty, | ||
126 | substitution: parameters, | ||
127 | })) | ||
125 | } | 128 | } |
126 | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Opaque(opaque_ty)) => { | 129 | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Opaque(opaque_ty)) => { |
127 | let opaque_ty_id = opaque_ty.opaque_ty_id; | 130 | let opaque_ty_id = opaque_ty.opaque_ty_id; |
@@ -130,7 +133,7 @@ impl ToChalk for Ty { | |||
130 | } | 133 | } |
131 | chalk_ir::TyKind::Function(chalk_ir::FnPointer { | 134 | chalk_ir::TyKind::Function(chalk_ir::FnPointer { |
132 | num_binders, | 135 | num_binders, |
133 | sig: chalk_ir::FnSig { variadic, .. }, | 136 | sig, |
134 | substitution, | 137 | substitution, |
135 | .. | 138 | .. |
136 | }) => { | 139 | }) => { |
@@ -139,11 +142,7 @@ impl ToChalk for Ty { | |||
139 | db, | 142 | db, |
140 | substitution.0.shifted_out(&Interner).expect("fn ptr should have no binders"), | 143 | substitution.0.shifted_out(&Interner).expect("fn ptr should have no binders"), |
141 | ); | 144 | ); |
142 | TyKind::Function(FnPointer { | 145 | TyKind::Function(FnPointer { num_args: (substs.len() - 1), sig, substs }) |
143 | num_args: (substs.len() - 1), | ||
144 | sig: FnSig { variadic }, | ||
145 | substs, | ||
146 | }) | ||
147 | } | 146 | } |
148 | chalk_ir::TyKind::BoundVar(idx) => TyKind::BoundVar(idx), | 147 | chalk_ir::TyKind::BoundVar(idx) => TyKind::BoundVar(idx), |
149 | chalk_ir::TyKind::InferenceVar(_iv, _kind) => TyKind::Unknown, | 148 | chalk_ir::TyKind::InferenceVar(_iv, _kind) => TyKind::Unknown, |