aboutsummaryrefslogtreecommitdiff
path: root/crates/completion/src/render/function.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/completion/src/render/function.rs')
-rw-r--r--crates/completion/src/render/function.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/crates/completion/src/render/function.rs b/crates/completion/src/render/function.rs
index 542383d7e..09d9f85bc 100644
--- a/crates/completion/src/render/function.rs
+++ b/crates/completion/src/render/function.rs
@@ -22,7 +22,7 @@ pub(crate) fn render_fn<'a>(
22struct FunctionRender<'a> { 22struct FunctionRender<'a> {
23 ctx: RenderContext<'a>, 23 ctx: RenderContext<'a>,
24 name: String, 24 name: String,
25 fn_: hir::Function, 25 func: hir::Function,
26 ast_node: Fn, 26 ast_node: Fn,
27} 27}
28 28
@@ -35,15 +35,15 @@ impl<'a> FunctionRender<'a> {
35 let name = local_name.unwrap_or_else(|| fn_.name(ctx.db()).to_string()); 35 let name = local_name.unwrap_or_else(|| fn_.name(ctx.db()).to_string());
36 let ast_node = fn_.source(ctx.db()).value; 36 let ast_node = fn_.source(ctx.db()).value;
37 37
38 FunctionRender { ctx, name, fn_, ast_node } 38 FunctionRender { ctx, name, func: fn_, ast_node }
39 } 39 }
40 40
41 fn render(self, import_to_add: Option<ImportToAdd>) -> CompletionItem { 41 fn render(self, import_to_add: Option<ImportToAdd>) -> CompletionItem {
42 let params = self.params(); 42 let params = self.params();
43 CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), self.name.clone()) 43 CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), self.name.clone())
44 .kind(self.kind()) 44 .kind(self.kind())
45 .set_documentation(self.ctx.docs(self.fn_)) 45 .set_documentation(self.ctx.docs(self.func))
46 .set_deprecated(self.ctx.is_deprecated(self.fn_)) 46 .set_deprecated(self.ctx.is_deprecated(self.func))
47 .detail(self.detail()) 47 .detail(self.detail())
48 .add_call_parens(self.ctx.completion, self.name, params) 48 .add_call_parens(self.ctx.completion, self.name, params)
49 .add_import(import_to_add) 49 .add_import(import_to_add)
@@ -67,7 +67,11 @@ impl<'a> FunctionRender<'a> {
67 } 67 }
68 68
69 fn params(&self) -> Params { 69 fn params(&self) -> Params {
70 let params_ty = self.fn_.params(self.ctx.db()); 70 let params_ty = if self.ctx.completion.dot_receiver.is_some() {
71 self.func.method_params(self.ctx.db()).unwrap_or_default()
72 } else {
73 self.func.assoc_fn_params(self.ctx.db())
74 };
71 let params = self 75 let params = self
72 .ast_node 76 .ast_node
73 .param_list() 77 .param_list()
@@ -87,7 +91,7 @@ impl<'a> FunctionRender<'a> {
87 } 91 }
88 92
89 fn kind(&self) -> CompletionItemKind { 93 fn kind(&self) -> CompletionItemKind {
90 if self.fn_.self_param(self.ctx.db()).is_some() { 94 if self.func.self_param(self.ctx.db()).is_some() {
91 CompletionItemKind::Method 95 CompletionItemKind::Method
92 } else { 96 } else {
93 CompletionItemKind::Function 97 CompletionItemKind::Function