aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/name.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/name.rs')
-rw-r--r--crates/ra_hir/src/name.rs47
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
19impl Name { 19impl 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)]
80pub(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}