aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty.rs')
-rw-r--r--crates/ra_hir/src/ty.rs22
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
10use ra_db::LocalSyntaxPtr; 10use ra_db::LocalSyntaxPtr;
11use ra_syntax::{ 11use 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