|  | //! A few helper functions for dealing with primitives. | 
|  |  | 
|  | pub use chalk_ir::{FloatTy, IntTy, UintTy}; | 
|  | pub use hir_def::builtin_type::{BuiltinFloat, BuiltinInt, BuiltinUint}; | 
|  |  | 
|  | pub fn int_ty_to_string(ty: IntTy) -> &'static str { | 
|  | match ty { | 
|  | IntTy::Isize => "isize", | 
|  | IntTy::I8 => "i8", | 
|  | IntTy::I16 => "i16", | 
|  | IntTy::I32 => "i32", | 
|  | IntTy::I64 => "i64", | 
|  | IntTy::I128 => "i128", | 
|  | } | 
|  | } | 
|  |  | 
|  | pub fn uint_ty_to_string(ty: UintTy) -> &'static str { | 
|  | match ty { | 
|  | UintTy::Usize => "usize", | 
|  | UintTy::U8 => "u8", | 
|  | UintTy::U16 => "u16", | 
|  | UintTy::U32 => "u32", | 
|  | UintTy::U64 => "u64", | 
|  | UintTy::U128 => "u128", | 
|  | } | 
|  | } | 
|  |  | 
|  | pub fn float_ty_to_string(ty: FloatTy) -> &'static str { | 
|  | match ty { | 
|  | FloatTy::F16 => "f16", | 
|  | FloatTy::F32 => "f32", | 
|  | FloatTy::F64 => "f64", | 
|  | FloatTy::F128 => "f128", | 
|  | } | 
|  | } | 
|  |  | 
|  | pub fn int_ty_to_string_ns(ty: rustc_type_ir::IntTy) -> &'static str { | 
|  | use rustc_type_ir::IntTy; | 
|  | match ty { | 
|  | IntTy::Isize => "isize", | 
|  | IntTy::I8 => "i8", | 
|  | IntTy::I16 => "i16", | 
|  | IntTy::I32 => "i32", | 
|  | IntTy::I64 => "i64", | 
|  | IntTy::I128 => "i128", | 
|  | } | 
|  | } | 
|  |  | 
|  | pub fn uint_ty_to_string_ns(ty: rustc_type_ir::UintTy) -> &'static str { | 
|  | use rustc_type_ir::UintTy; | 
|  | match ty { | 
|  | UintTy::Usize => "usize", | 
|  | UintTy::U8 => "u8", | 
|  | UintTy::U16 => "u16", | 
|  | UintTy::U32 => "u32", | 
|  | UintTy::U64 => "u64", | 
|  | UintTy::U128 => "u128", | 
|  | } | 
|  | } | 
|  |  | 
|  | pub fn float_ty_to_string_ns(ty: rustc_type_ir::FloatTy) -> &'static str { | 
|  | use rustc_type_ir::FloatTy; | 
|  | match ty { | 
|  | FloatTy::F16 => "f16", | 
|  | FloatTy::F32 => "f32", | 
|  | FloatTy::F64 => "f64", | 
|  | FloatTy::F128 => "f128", | 
|  | } | 
|  | } | 
|  |  | 
|  | pub(super) fn int_ty_from_builtin(t: BuiltinInt) -> IntTy { | 
|  | match t { | 
|  | BuiltinInt::Isize => IntTy::Isize, | 
|  | BuiltinInt::I8 => IntTy::I8, | 
|  | BuiltinInt::I16 => IntTy::I16, | 
|  | BuiltinInt::I32 => IntTy::I32, | 
|  | BuiltinInt::I64 => IntTy::I64, | 
|  | BuiltinInt::I128 => IntTy::I128, | 
|  | } | 
|  | } | 
|  |  | 
|  | pub(super) fn uint_ty_from_builtin(t: BuiltinUint) -> UintTy { | 
|  | match t { | 
|  | BuiltinUint::Usize => UintTy::Usize, | 
|  | BuiltinUint::U8 => UintTy::U8, | 
|  | BuiltinUint::U16 => UintTy::U16, | 
|  | BuiltinUint::U32 => UintTy::U32, | 
|  | BuiltinUint::U64 => UintTy::U64, | 
|  | BuiltinUint::U128 => UintTy::U128, | 
|  | } | 
|  | } | 
|  |  | 
|  | pub(super) fn float_ty_from_builtin(t: BuiltinFloat) -> FloatTy { | 
|  | match t { | 
|  | BuiltinFloat::F16 => FloatTy::F16, | 
|  | BuiltinFloat::F32 => FloatTy::F32, | 
|  | BuiltinFloat::F64 => FloatTy::F64, | 
|  | BuiltinFloat::F128 => FloatTy::F128, | 
|  | } | 
|  | } |