show local variable types in completion

This commit is contained in:
Ekaterina Babshukova 2019-07-23 19:24:54 +03:00
parent 5f3ff157e3
commit 8e49bb664a
6 changed files with 30 additions and 9 deletions

View File

@ -256,6 +256,14 @@ impl SourceAnalyzer {
Some(self.infer.as_ref()?[pat_id].clone()) Some(self.infer.as_ref()?[pat_id].clone())
} }
pub fn type_of_pat_by_id(
&self,
_db: &impl HirDatabase,
pat_id: expr::PatId,
) -> Option<crate::Ty> {
Some(self.infer.as_ref()?[pat_id].clone())
}
pub fn resolve_method_call(&self, call: &ast::MethodCallExpr) -> Option<Function> { pub fn resolve_method_call(&self, call: &ast::MethodCallExpr) -> Option<Function> {
let expr_id = self.body_source_map.as_ref()?.node_expr(&call.clone().into())?; let expr_id = self.body_source_map.as_ref()?.node_expr(&call.clone().into())?;
self.infer.as_ref()?.method_resolution(expr_id) self.infer.as_ref()?.method_resolution(expr_id)

View File

@ -1,5 +1,5 @@
//! This modules takes care of rendering various defenitions as completion items. //! This modules takes care of rendering various defenitions as completion items.
use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution}; use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution, Ty};
use join_to_string::join; use join_to_string::join;
use ra_syntax::ast::NameOwner; use ra_syntax::ast::NameOwner;
use test_utils::tested_by; use test_utils::tested_by;
@ -80,10 +80,18 @@ impl Completions {
None, None,
), ),
}; };
CompletionItem::new(completion_kind, ctx.source_range(), local_name)
.kind(kind) let mut completion_item =
.set_documentation(docs) CompletionItem::new(completion_kind, ctx.source_range(), local_name);
.add_to(self) if let Resolution::LocalBinding(pat_id) = def {
let ty = ctx
.analyzer
.type_of_pat_by_id(ctx.db, pat_id.clone())
.filter(|t| t != &Ty::Unknown)
.map(|t| t.display(ctx.db).to_string());
completion_item = completion_item.set_detail(ty);
};
completion_item.kind(kind).set_documentation(docs).add_to(self)
} }
pub(crate) fn add_function(&mut self, ctx: &CompletionContext, func: hir::Function) { pub(crate) fn add_function(&mut self, ctx: &CompletionContext, func: hir::Function) {

View File

@ -1,5 +1,5 @@
--- ---
created: "2019-05-23T22:23:35.122168608Z" created: "2019-07-23T16:11:48.828805910Z"
creator: insta@0.8.1 creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions expression: kind_completions
@ -18,6 +18,7 @@ expression: kind_completions
delete: [214; 214), delete: [214; 214),
insert: "b", insert: "b",
kind: Binding, kind: Binding,
detail: "i32",
}, },
CompletionItem { CompletionItem {
label: "quux", label: "quux",

View File

@ -1,5 +1,5 @@
--- ---
created: "2019-05-23T22:23:35.122797188Z" created: "2019-07-23T16:11:48.828811567Z"
creator: insta@0.8.1 creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions expression: kind_completions
@ -19,6 +19,7 @@ expression: kind_completions
delete: [79; 79), delete: [79; 79),
insert: "x", insert: "x",
kind: Binding, kind: Binding,
detail: "i32",
}, },
CompletionItem { CompletionItem {
label: "y", label: "y",
@ -26,5 +27,6 @@ expression: kind_completions
delete: [79; 79), delete: [79; 79),
insert: "y", insert: "y",
kind: Binding, kind: Binding,
detail: "i32",
}, },
] ]

View File

@ -1,5 +1,5 @@
--- ---
created: "2019-05-23T22:23:35.142044205Z" created: "2019-07-23T16:11:48.860949870Z"
creator: insta@0.8.1 creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions expression: kind_completions
@ -11,6 +11,7 @@ expression: kind_completions
delete: [126; 126), delete: [126; 126),
insert: "bar", insert: "bar",
kind: Binding, kind: Binding,
detail: "i32",
}, },
CompletionItem { CompletionItem {
label: "foo", label: "foo",

View File

@ -1,5 +1,5 @@
--- ---
created: "2019-05-23T22:23:35.141900902Z" created: "2019-07-23T16:11:48.859812318Z"
creator: insta@0.8.1 creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions expression: kind_completions
@ -18,5 +18,6 @@ expression: kind_completions
delete: [25; 25), delete: [25; 25),
insert: "self", insert: "self",
kind: Binding, kind: Binding,
detail: "&{unknown}",
}, },
] ]