diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/presentation.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/presentation.rs | 18 |
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. |
2 | use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution}; | 2 | use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution, Ty}; |
3 | use join_to_string::join; | 3 | use join_to_string::join; |
4 | use ra_syntax::ast::NameOwner; | 4 | use ra_syntax::ast::NameOwner; |
5 | use test_utils::tested_by; | 5 | use 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) { |