hir_ty/
primitive.rs

1//! A few helper functions for dealing with primitives.
2
3pub use chalk_ir::{FloatTy, IntTy, UintTy};
4pub use hir_def::builtin_type::{BuiltinFloat, BuiltinInt, BuiltinUint};
5
6pub fn int_ty_to_string(ty: IntTy) -> &'static str {
7    match ty {
8        IntTy::Isize => "isize",
9        IntTy::I8 => "i8",
10        IntTy::I16 => "i16",
11        IntTy::I32 => "i32",
12        IntTy::I64 => "i64",
13        IntTy::I128 => "i128",
14    }
15}
16
17pub fn uint_ty_to_string(ty: UintTy) -> &'static str {
18    match ty {
19        UintTy::Usize => "usize",
20        UintTy::U8 => "u8",
21        UintTy::U16 => "u16",
22        UintTy::U32 => "u32",
23        UintTy::U64 => "u64",
24        UintTy::U128 => "u128",
25    }
26}
27
28pub fn float_ty_to_string(ty: FloatTy) -> &'static str {
29    match ty {
30        FloatTy::F16 => "f16",
31        FloatTy::F32 => "f32",
32        FloatTy::F64 => "f64",
33        FloatTy::F128 => "f128",
34    }
35}
36
37pub fn int_ty_to_string_ns(ty: rustc_type_ir::IntTy) -> &'static str {
38    use rustc_type_ir::IntTy;
39    match ty {
40        IntTy::Isize => "isize",
41        IntTy::I8 => "i8",
42        IntTy::I16 => "i16",
43        IntTy::I32 => "i32",
44        IntTy::I64 => "i64",
45        IntTy::I128 => "i128",
46    }
47}
48
49pub fn uint_ty_to_string_ns(ty: rustc_type_ir::UintTy) -> &'static str {
50    use rustc_type_ir::UintTy;
51    match ty {
52        UintTy::Usize => "usize",
53        UintTy::U8 => "u8",
54        UintTy::U16 => "u16",
55        UintTy::U32 => "u32",
56        UintTy::U64 => "u64",
57        UintTy::U128 => "u128",
58    }
59}
60
61pub fn float_ty_to_string_ns(ty: rustc_type_ir::FloatTy) -> &'static str {
62    use rustc_type_ir::FloatTy;
63    match ty {
64        FloatTy::F16 => "f16",
65        FloatTy::F32 => "f32",
66        FloatTy::F64 => "f64",
67        FloatTy::F128 => "f128",
68    }
69}
70
71pub(super) fn int_ty_from_builtin(t: BuiltinInt) -> IntTy {
72    match t {
73        BuiltinInt::Isize => IntTy::Isize,
74        BuiltinInt::I8 => IntTy::I8,
75        BuiltinInt::I16 => IntTy::I16,
76        BuiltinInt::I32 => IntTy::I32,
77        BuiltinInt::I64 => IntTy::I64,
78        BuiltinInt::I128 => IntTy::I128,
79    }
80}
81
82pub(super) fn uint_ty_from_builtin(t: BuiltinUint) -> UintTy {
83    match t {
84        BuiltinUint::Usize => UintTy::Usize,
85        BuiltinUint::U8 => UintTy::U8,
86        BuiltinUint::U16 => UintTy::U16,
87        BuiltinUint::U32 => UintTy::U32,
88        BuiltinUint::U64 => UintTy::U64,
89        BuiltinUint::U128 => UintTy::U128,
90    }
91}
92
93pub(super) fn float_ty_from_builtin(t: BuiltinFloat) -> FloatTy {
94    match t {
95        BuiltinFloat::F16 => FloatTy::F16,
96        BuiltinFloat::F32 => FloatTy::F32,
97        BuiltinFloat::F64 => FloatTy::F64,
98        BuiltinFloat::F128 => FloatTy::F128,
99    }
100}