diff options
Diffstat (limited to 'crates/ra_hir/src/ty.rs')
-rw-r--r-- | crates/ra_hir/src/ty.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index 36dc5d137..087385b98 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs | |||
@@ -9,7 +9,7 @@ use std::collections::HashMap; | |||
9 | 9 | ||
10 | use ra_db::LocalSyntaxPtr; | 10 | use ra_db::LocalSyntaxPtr; |
11 | use ra_syntax::{ | 11 | use ra_syntax::{ |
12 | TextRange, TextUnit, | 12 | TextRange, TextUnit, SmolStr, |
13 | algo::visit::{visitor, Visitor}, | 13 | algo::visit::{visitor, Visitor}, |
14 | ast::{self, AstNode, DocCommentsOwner, NameOwner, LoopBodyOwner, ArgListOwner}, | 14 | ast::{self, AstNode, DocCommentsOwner, NameOwner, LoopBodyOwner, ArgListOwner}, |
15 | SyntaxNodeRef | 15 | SyntaxNodeRef |
@@ -148,7 +148,25 @@ impl Ty { | |||
148 | ParenType(_inner) => Ty::Unknown, // TODO | 148 | ParenType(_inner) => Ty::Unknown, // TODO |
149 | TupleType(_inner) => Ty::Unknown, // TODO | 149 | TupleType(_inner) => Ty::Unknown, // TODO |
150 | NeverType(..) => Ty::Never, | 150 | NeverType(..) => Ty::Never, |
151 | PathType(_inner) => Ty::Unknown, // TODO | 151 | PathType(inner) => { |
152 | let path = if let Some(p) = inner.path() { p } else { return Ty::Unknown }; | ||
153 | if path.qualifier().is_none() { | ||
154 | let name = path.segment().and_then(|s| s.name_ref()).map(|n| n.text()).unwrap_or(SmolStr::new("")); | ||
155 | if let Some(int_ty) = primitive::IntTy::from_string(&name) { | ||
156 | Ty::Int(int_ty) | ||
157 | } else if let Some(uint_ty) = primitive::UintTy::from_string(&name) { | ||
158 | Ty::Uint(uint_ty) | ||
159 | } else if let Some(float_ty) = primitive::FloatTy::from_string(&name) { | ||
160 | Ty::Float(float_ty) | ||
161 | } else { | ||
162 | // TODO | ||
163 | Ty::Unknown | ||
164 | } | ||
165 | } else { | ||
166 | // TODO | ||
167 | Ty::Unknown | ||
168 | } | ||
169 | }, | ||
152 | PointerType(_inner) => Ty::Unknown, // TODO | 170 | PointerType(_inner) => Ty::Unknown, // TODO |
153 | ArrayType(_inner) => Ty::Unknown, // TODO | 171 | ArrayType(_inner) => Ty::Unknown, // TODO |
154 | SliceType(_inner) => Ty::Unknown, // TODO | 172 | SliceType(_inner) => Ty::Unknown, // TODO |