diff options
Diffstat (limited to 'crates/ide_completion/src/render/function.rs')
-rw-r--r-- | crates/ide_completion/src/render/function.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/crates/ide_completion/src/render/function.rs b/crates/ide_completion/src/render/function.rs index b6b67e7a7..010303182 100644 --- a/crates/ide_completion/src/render/function.rs +++ b/crates/ide_completion/src/render/function.rs | |||
@@ -6,8 +6,11 @@ use itertools::Itertools; | |||
6 | use syntax::ast::Fn; | 6 | use syntax::ast::Fn; |
7 | 7 | ||
8 | use crate::{ | 8 | use crate::{ |
9 | item::{CompletionItem, CompletionItemKind, CompletionKind, ImportEdit}, | 9 | item::{CompletionItem, CompletionItemKind, CompletionKind, CompletionRelevance, ImportEdit}, |
10 | render::{builder_ext::Params, RenderContext}, | 10 | render::{ |
11 | builder_ext::Params, compute_exact_name_match, compute_exact_type_match, compute_ref_match, | ||
12 | RenderContext, | ||
13 | }, | ||
11 | }; | 14 | }; |
12 | 15 | ||
13 | pub(crate) fn render_fn<'a>( | 16 | pub(crate) fn render_fn<'a>( |
@@ -53,9 +56,20 @@ impl<'a> FunctionRender<'a> { | |||
53 | self.ctx.is_deprecated(self.func) || self.ctx.is_deprecated_assoc_item(self.func), | 56 | self.ctx.is_deprecated(self.func) || self.ctx.is_deprecated_assoc_item(self.func), |
54 | ) | 57 | ) |
55 | .detail(self.detail()) | 58 | .detail(self.detail()) |
56 | .add_call_parens(self.ctx.completion, self.name, params) | 59 | .add_call_parens(self.ctx.completion, self.name.clone(), params) |
57 | .add_import(import_to_add); | 60 | .add_import(import_to_add); |
58 | 61 | ||
62 | let ret_type = self.func.ret_type(self.ctx.db()); | ||
63 | item.set_relevance(CompletionRelevance { | ||
64 | exact_type_match: compute_exact_type_match(self.ctx.completion, &ret_type), | ||
65 | exact_name_match: compute_exact_name_match(self.ctx.completion, self.name.clone()), | ||
66 | ..CompletionRelevance::default() | ||
67 | }); | ||
68 | |||
69 | if let Some(ref_match) = compute_ref_match(self.ctx.completion, &ret_type) { | ||
70 | item.ref_match(ref_match); | ||
71 | } | ||
72 | |||
59 | item.build() | 73 | item.build() |
60 | } | 74 | } |
61 | 75 | ||