aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/traits
diff options
context:
space:
mode:
authorLukas Wirth <[email protected]>2021-02-28 09:58:34 +0000
committerLukas Wirth <[email protected]>2021-02-28 10:06:37 +0000
commit7c2dd85a32e320fd412a720ea5b847c66bf246ae (patch)
treefc5fb1d9ae0ae59f4d7eafe68720005d095bd360 /crates/hir_ty/src/traits
parent5183c9f08345c664237ae138e86f96ff46714f15 (diff)
Use chalk_ir::Scalar directly
Diffstat (limited to 'crates/hir_ty/src/traits')
-rw-r--r--crates/hir_ty/src/traits/chalk/mapping.rs64
1 files changed, 4 insertions, 60 deletions
diff --git a/crates/hir_ty/src/traits/chalk/mapping.rs b/crates/hir_ty/src/traits/chalk/mapping.rs
index 0e9fc3265..5a3cb7906 100644
--- a/crates/hir_ty/src/traits/chalk/mapping.rs
+++ b/crates/hir_ty/src/traits/chalk/mapping.rs
@@ -14,7 +14,7 @@ use hir_def::{type_ref::Mutability, AssocContainerId, GenericDefId, Lookup, Type
14 14
15use crate::{ 15use crate::{
16 db::HirDatabase, 16 db::HirDatabase,
17 primitive::{FloatTy, IntTy, UintTy}, 17 primitive::UintTy,
18 traits::{Canonical, Obligation}, 18 traits::{Canonical, Obligation},
19 ApplicationTy, CallableDefId, GenericPredicate, InEnvironment, OpaqueTy, OpaqueTyId, 19 ApplicationTy, CallableDefId, GenericPredicate, InEnvironment, OpaqueTy, OpaqueTyId,
20 ProjectionPredicate, ProjectionTy, Scalar, Substs, TraitEnvironment, TraitRef, Ty, TyKind, 20 ProjectionPredicate, ProjectionTy, Scalar, Substs, TraitEnvironment, TraitRef, Ty, TyKind,
@@ -64,31 +64,7 @@ impl ToChalk for Ty {
64 chalk_ir::TyKind::Foreign(foreign_type_id).intern(&Interner) 64 chalk_ir::TyKind::Foreign(foreign_type_id).intern(&Interner)
65 } 65 }
66 66
67 TypeCtor::Scalar(scalar) => chalk_ir::TyKind::Scalar(match scalar { 67 TypeCtor::Scalar(scalar) => chalk_ir::TyKind::Scalar(scalar).intern(&Interner),
68 Scalar::Bool => chalk_ir::Scalar::Bool,
69 Scalar::Char => chalk_ir::Scalar::Char,
70 Scalar::Int(it) => chalk_ir::Scalar::Int(match it {
71 IntTy::Isize => chalk_ir::IntTy::Isize,
72 IntTy::I8 => chalk_ir::IntTy::I8,
73 IntTy::I16 => chalk_ir::IntTy::I16,
74 IntTy::I32 => chalk_ir::IntTy::I32,
75 IntTy::I64 => chalk_ir::IntTy::I64,
76 IntTy::I128 => chalk_ir::IntTy::I128,
77 }),
78 Scalar::Uint(it) => chalk_ir::Scalar::Uint(match it {
79 UintTy::Usize => chalk_ir::UintTy::Usize,
80 UintTy::U8 => chalk_ir::UintTy::U8,
81 UintTy::U16 => chalk_ir::UintTy::U16,
82 UintTy::U32 => chalk_ir::UintTy::U32,
83 UintTy::U64 => chalk_ir::UintTy::U64,
84 UintTy::U128 => chalk_ir::UintTy::U128,
85 }),
86 Scalar::Float(it) => chalk_ir::Scalar::Float(match it {
87 FloatTy::F32 => chalk_ir::FloatTy::F32,
88 FloatTy::F64 => chalk_ir::FloatTy::F64,
89 }),
90 })
91 .intern(&Interner),
92 68
93 TypeCtor::Tuple { cardinality } => { 69 TypeCtor::Tuple { cardinality } => {
94 let substitution = apply_ty.parameters.to_chalk(db); 70 let substitution = apply_ty.parameters.to_chalk(db);
@@ -232,38 +208,7 @@ impl ToChalk for Ty {
232 apply_ty_from_chalk(db, TypeCtor::OpaqueType(from_chalk(db, opaque_type_id)), subst) 208 apply_ty_from_chalk(db, TypeCtor::OpaqueType(from_chalk(db, opaque_type_id)), subst)
233 } 209 }
234 210
235 chalk_ir::TyKind::Scalar(chalk_ir::Scalar::Bool) => { 211 chalk_ir::TyKind::Scalar(scalar) => Ty::simple(TypeCtor::Scalar(scalar)),
236 Ty::simple(TypeCtor::Scalar(Scalar::Bool))
237 }
238 chalk_ir::TyKind::Scalar(chalk_ir::Scalar::Char) => {
239 Ty::simple(TypeCtor::Scalar(Scalar::Char))
240 }
241 chalk_ir::TyKind::Scalar(chalk_ir::Scalar::Int(int_ty)) => {
242 Ty::simple(TypeCtor::Scalar(Scalar::Int(match int_ty {
243 chalk_ir::IntTy::Isize => IntTy::Isize,
244 chalk_ir::IntTy::I8 => IntTy::I8,
245 chalk_ir::IntTy::I16 => IntTy::I16,
246 chalk_ir::IntTy::I32 => IntTy::I32,
247 chalk_ir::IntTy::I64 => IntTy::I64,
248 chalk_ir::IntTy::I128 => IntTy::I128,
249 })))
250 }
251 chalk_ir::TyKind::Scalar(chalk_ir::Scalar::Uint(int_ty)) => {
252 Ty::simple(TypeCtor::Scalar(Scalar::Uint(match int_ty {
253 chalk_ir::UintTy::Usize => UintTy::Usize,
254 chalk_ir::UintTy::U8 => UintTy::U8,
255 chalk_ir::UintTy::U16 => UintTy::U16,
256 chalk_ir::UintTy::U32 => UintTy::U32,
257 chalk_ir::UintTy::U64 => UintTy::U64,
258 chalk_ir::UintTy::U128 => UintTy::U128,
259 })))
260 }
261 chalk_ir::TyKind::Scalar(chalk_ir::Scalar::Float(float_ty)) => {
262 Ty::simple(TypeCtor::Scalar(Scalar::Float(match float_ty {
263 chalk_ir::FloatTy::F32 => FloatTy::F32,
264 chalk_ir::FloatTy::F64 => FloatTy::F64,
265 })))
266 }
267 chalk_ir::TyKind::Tuple(cardinality, subst) => { 212 chalk_ir::TyKind::Tuple(cardinality, subst) => {
268 apply_ty_from_chalk(db, TypeCtor::Tuple { cardinality: cardinality as u16 }, subst) 213 apply_ty_from_chalk(db, TypeCtor::Tuple { cardinality: cardinality as u16 }, subst)
269 } 214 }
@@ -321,8 +266,7 @@ fn ref_to_chalk(
321/// fake constant here, because Chalks built-in logic may expect it to be there. 266/// fake constant here, because Chalks built-in logic may expect it to be there.
322fn array_to_chalk(db: &dyn HirDatabase, subst: Substs) -> chalk_ir::Ty<Interner> { 267fn array_to_chalk(db: &dyn HirDatabase, subst: Substs) -> chalk_ir::Ty<Interner> {
323 let arg = subst[0].clone().to_chalk(db); 268 let arg = subst[0].clone().to_chalk(db);
324 let usize_ty = 269 let usize_ty = chalk_ir::TyKind::Scalar(Scalar::Uint(UintTy::Usize)).intern(&Interner);
325 chalk_ir::TyKind::Scalar(chalk_ir::Scalar::Uint(chalk_ir::UintTy::Usize)).intern(&Interner);
326 let const_ = chalk_ir::ConstData { 270 let const_ = chalk_ir::ConstData {
327 ty: usize_ty, 271 ty: usize_ty,
328 value: chalk_ir::ConstValue::Concrete(chalk_ir::ConcreteConst { interned: () }), 272 value: chalk_ir::ConstValue::Concrete(chalk_ir::ConcreteConst { interned: () }),