aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_completion/src/render/function.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ide_completion/src/render/function.rs')
-rw-r--r--crates/ide_completion/src/render/function.rs20
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;
6use syntax::ast::Fn; 6use syntax::ast::Fn;
7 7
8use crate::{ 8use 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
13pub(crate) fn render_fn<'a>( 16pub(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