diff options
Diffstat (limited to 'crates/ra_hir/src/name.rs')
-rw-r--r-- | crates/ra_hir/src/name.rs | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/crates/ra_hir/src/name.rs b/crates/ra_hir/src/name.rs index 7f42c9f04..cdad31be7 100644 --- a/crates/ra_hir/src/name.rs +++ b/crates/ra_hir/src/name.rs | |||
@@ -17,9 +17,25 @@ impl fmt::Display for Name { | |||
17 | } | 17 | } |
18 | 18 | ||
19 | impl Name { | 19 | impl Name { |
20 | // TODO: get rid of this? | 20 | pub(crate) fn as_known_name(&self) -> Option<KnownName> { |
21 | pub(crate) fn as_str(&self) -> &str { | 21 | let name = match self.text.as_str() { |
22 | self.text.as_str() | 22 | "isize" => KnownName::Isize, |
23 | "i8" => KnownName::I8, | ||
24 | "i16" => KnownName::I16, | ||
25 | "i32" => KnownName::I32, | ||
26 | "i64" => KnownName::I64, | ||
27 | "i128" => KnownName::I128, | ||
28 | "usize" => KnownName::Usize, | ||
29 | "u8" => KnownName::U8, | ||
30 | "u16" => KnownName::U16, | ||
31 | "u32" => KnownName::U32, | ||
32 | "u64" => KnownName::U64, | ||
33 | "u128" => KnownName::U128, | ||
34 | "f32" => KnownName::F32, | ||
35 | "f64" => KnownName::F64, | ||
36 | _ => return None, | ||
37 | }; | ||
38 | Some(name) | ||
23 | } | 39 | } |
24 | 40 | ||
25 | #[cfg(not(test))] | 41 | #[cfg(not(test))] |
@@ -54,3 +70,28 @@ impl AsName for ra_db::Dependency { | |||
54 | Name::new(self.name.clone()) | 70 | Name::new(self.name.clone()) |
55 | } | 71 | } |
56 | } | 72 | } |
73 | |||
74 | // Ideally, should be replaced with | ||
75 | // ``` | ||
76 | // const ISIZE: Name = Name::new("isize") | ||
77 | // ``` | ||
78 | // but const-fn is not that powerful yet. | ||
79 | #[derive(Debug)] | ||
80 | pub(crate) enum KnownName { | ||
81 | Isize, | ||
82 | I8, | ||
83 | I16, | ||
84 | I32, | ||
85 | I64, | ||
86 | I128, | ||
87 | |||
88 | Usize, | ||
89 | U8, | ||
90 | U16, | ||
91 | U32, | ||
92 | U64, | ||
93 | U128, | ||
94 | |||
95 | F32, | ||
96 | F64, | ||
97 | } | ||