aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion/presentation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/completion/presentation.rs')
-rw-r--r--crates/ra_ide_api/src/completion/presentation.rs18
1 files changed, 13 insertions, 5 deletions
diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs
index 98060947a..5cf55a496 100644
--- a/crates/ra_ide_api/src/completion/presentation.rs
+++ b/crates/ra_ide_api/src/completion/presentation.rs
@@ -1,5 +1,5 @@
1//! This modules takes care of rendering various defenitions as completion items. 1//! This modules takes care of rendering various defenitions as completion items.
2use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution}; 2use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution, Ty};
3use join_to_string::join; 3use join_to_string::join;
4use ra_syntax::ast::NameOwner; 4use ra_syntax::ast::NameOwner;
5use test_utils::tested_by; 5use test_utils::tested_by;
@@ -80,10 +80,18 @@ impl Completions {
80 None, 80 None,
81 ), 81 ),
82 }; 82 };
83 CompletionItem::new(completion_kind, ctx.source_range(), local_name) 83
84 .kind(kind) 84 let mut completion_item =
85 .set_documentation(docs) 85 CompletionItem::new(completion_kind, ctx.source_range(), local_name);
86 .add_to(self) 86 if let Resolution::LocalBinding(pat_id) = def {
87 let ty = ctx
88 .analyzer
89 .type_of_pat_by_id(ctx.db, pat_id.clone())
90 .filter(|t| t != &Ty::Unknown)
91 .map(|t| t.display(ctx.db).to_string());
92 completion_item = completion_item.set_detail(ty);
93 };
94 completion_item.kind(kind).set_documentation(docs).add_to(self)
87 } 95 }
88 96
89 pub(crate) fn add_function(&mut self, ctx: &CompletionContext, func: hir::Function) { 97 pub(crate) fn add_function(&mut self, ctx: &CompletionContext, func: hir::Function) {