aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/primitive.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2018-12-20 20:56:28 +0000
committerFlorian Diebold <[email protected]>2018-12-23 12:48:04 +0000
commit3ac605e6876056fa56098231cc2f96553faab8f0 (patch)
tree82294448f696bae2ba640c4fb74dac9b929265a3 /crates/ra_hir/src/ty/primitive.rs
parentd77520fde3c953968beb09a3da80a0e7b17bbc04 (diff)
Add beginnings of type infrastructure
Diffstat (limited to 'crates/ra_hir/src/ty/primitive.rs')
-rw-r--r--crates/ra_hir/src/ty/primitive.rs98
1 files changed, 98 insertions, 0 deletions
diff --git a/crates/ra_hir/src/ty/primitive.rs b/crates/ra_hir/src/ty/primitive.rs
new file mode 100644
index 000000000..4a5ce5a97
--- /dev/null
+++ b/crates/ra_hir/src/ty/primitive.rs
@@ -0,0 +1,98 @@
1use std::fmt;
2
3#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Copy)]
4pub enum IntTy {
5 Isize,
6 I8,
7 I16,
8 I32,
9 I64,
10 I128,
11}
12
13impl fmt::Debug for IntTy {
14 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15 fmt::Display::fmt(self, f)
16 }
17}
18
19impl fmt::Display for IntTy {
20 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21 write!(f, "{}", self.ty_to_string())
22 }
23}
24
25impl IntTy {
26 pub fn ty_to_string(&self) -> &'static str {
27 match *self {
28 IntTy::Isize => "isize",
29 IntTy::I8 => "i8",
30 IntTy::I16 => "i16",
31 IntTy::I32 => "i32",
32 IntTy::I64 => "i64",
33 IntTy::I128 => "i128",
34 }
35 }
36}
37
38#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Copy)]
39pub enum UintTy {
40 Usize,
41 U8,
42 U16,
43 U32,
44 U64,
45 U128,
46}
47
48impl UintTy {
49 pub fn ty_to_string(&self) -> &'static str {
50 match *self {
51 UintTy::Usize => "usize",
52 UintTy::U8 => "u8",
53 UintTy::U16 => "u16",
54 UintTy::U32 => "u32",
55 UintTy::U64 => "u64",
56 UintTy::U128 => "u128",
57 }
58 }
59}
60
61impl fmt::Debug for UintTy {
62 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
63 fmt::Display::fmt(self, f)
64 }
65}
66
67impl fmt::Display for UintTy {
68 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
69 write!(f, "{}", self.ty_to_string())
70 }
71}
72
73#[derive(Clone, PartialEq, Eq, Hash, Copy, PartialOrd, Ord)]
74pub enum FloatTy {
75 F32,
76 F64,
77}
78
79impl fmt::Debug for FloatTy {
80 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
81 fmt::Display::fmt(self, f)
82 }
83}
84
85impl fmt::Display for FloatTy {
86 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
87 write!(f, "{}", self.ty_to_string())
88 }
89}
90
91impl FloatTy {
92 pub fn ty_to_string(self) -> &'static str {
93 match self {
94 FloatTy::F32 => "f32",
95 FloatTy::F64 => "f64",
96 }
97 }
98}