aboutsummaryrefslogtreecommitdiff
path: root/crates/completion/src/render
diff options
context:
space:
mode:
authorKirill Bulatov <[email protected]>2020-11-27 10:22:10 +0000
committerKirill Bulatov <[email protected]>2020-11-27 16:30:10 +0000
commitf75f07019bd754e4fcc40c6144cc83911bbf21c8 (patch)
treebe61aa6b64ebd854037d551c9aaddcddfd0d7041 /crates/completion/src/render
parentf4ae3650d855554575f866264a3c8197dfd12835 (diff)
Group import data in a struct
Diffstat (limited to 'crates/completion/src/render')
-rw-r--r--crates/completion/src/render/enum_variant.rs14
-rw-r--r--crates/completion/src/render/function.rs16
-rw-r--r--crates/completion/src/render/macro_.rs17
3 files changed, 17 insertions, 30 deletions
diff --git a/crates/completion/src/render/enum_variant.rs b/crates/completion/src/render/enum_variant.rs
index 5d4fbb641..f4bd02f25 100644
--- a/crates/completion/src/render/enum_variant.rs
+++ b/crates/completion/src/render/enum_variant.rs
@@ -1,24 +1,23 @@
1//! Renderer for `enum` variants. 1//! Renderer for `enum` variants.
2 2
3use hir::{HasAttrs, HirDisplay, ModPath, StructKind}; 3use hir::{HasAttrs, HirDisplay, ModPath, StructKind};
4use ide_helpers::insert_use::{ImportScope, MergeBehaviour};
5use itertools::Itertools; 4use itertools::Itertools;
6use test_utils::mark; 5use test_utils::mark;
7 6
8use crate::{ 7use crate::{
9 item::{CompletionItem, CompletionItemKind, CompletionKind}, 8 item::{CompletionItem, CompletionItemKind, CompletionKind, ImportToAdd},
10 render::{builder_ext::Params, RenderContext}, 9 render::{builder_ext::Params, RenderContext},
11}; 10};
12 11
13pub(crate) fn render_enum_variant<'a>( 12pub(crate) fn render_enum_variant<'a>(
14 ctx: RenderContext<'a>, 13 ctx: RenderContext<'a>,
15 import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, 14 import_to_add: Option<ImportToAdd>,
16 local_name: Option<String>, 15 local_name: Option<String>,
17 variant: hir::EnumVariant, 16 variant: hir::EnumVariant,
18 path: Option<ModPath>, 17 path: Option<ModPath>,
19) -> CompletionItem { 18) -> CompletionItem {
20 let _p = profile::span("render_enum_variant"); 19 let _p = profile::span("render_enum_variant");
21 EnumVariantRender::new(ctx, local_name, variant, path).render(import_data) 20 EnumVariantRender::new(ctx, local_name, variant, path).render(import_to_add)
22} 21}
23 22
24#[derive(Debug)] 23#[derive(Debug)]
@@ -63,10 +62,7 @@ impl<'a> EnumVariantRender<'a> {
63 } 62 }
64 } 63 }
65 64
66 fn render( 65 fn render(self, import_to_add: Option<ImportToAdd>) -> CompletionItem {
67 self,
68 import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>,
69 ) -> CompletionItem {
70 let mut builder = CompletionItem::new( 66 let mut builder = CompletionItem::new(
71 CompletionKind::Reference, 67 CompletionKind::Reference,
72 self.ctx.source_range(), 68 self.ctx.source_range(),
@@ -75,7 +71,7 @@ impl<'a> EnumVariantRender<'a> {
75 .kind(CompletionItemKind::EnumVariant) 71 .kind(CompletionItemKind::EnumVariant)
76 .set_documentation(self.variant.docs(self.ctx.db())) 72 .set_documentation(self.variant.docs(self.ctx.db()))
77 .set_deprecated(self.ctx.is_deprecated(self.variant)) 73 .set_deprecated(self.ctx.is_deprecated(self.variant))
78 .import_data(import_data) 74 .add_import(import_to_add)
79 .detail(self.detail()); 75 .detail(self.detail());
80 76
81 if self.variant_kind == StructKind::Tuple { 77 if self.variant_kind == StructKind::Tuple {
diff --git a/crates/completion/src/render/function.rs b/crates/completion/src/render/function.rs
index 07e99058a..542383d7e 100644
--- a/crates/completion/src/render/function.rs
+++ b/crates/completion/src/render/function.rs
@@ -1,22 +1,21 @@
1//! Renderer for function calls. 1//! Renderer for function calls.
2 2
3use hir::{HasSource, ModPath, Type}; 3use hir::{HasSource, Type};
4use ide_helpers::insert_use::{ImportScope, MergeBehaviour};
5use syntax::{ast::Fn, display::function_declaration}; 4use syntax::{ast::Fn, display::function_declaration};
6 5
7use crate::{ 6use crate::{
8 item::{CompletionItem, CompletionItemKind, CompletionKind}, 7 item::{CompletionItem, CompletionItemKind, CompletionKind, ImportToAdd},
9 render::{builder_ext::Params, RenderContext}, 8 render::{builder_ext::Params, RenderContext},
10}; 9};
11 10
12pub(crate) fn render_fn<'a>( 11pub(crate) fn render_fn<'a>(
13 ctx: RenderContext<'a>, 12 ctx: RenderContext<'a>,
14 import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>, 13 import_to_add: Option<ImportToAdd>,
15 local_name: Option<String>, 14 local_name: Option<String>,
16 fn_: hir::Function, 15 fn_: hir::Function,
17) -> CompletionItem { 16) -> CompletionItem {
18 let _p = profile::span("render_fn"); 17 let _p = profile::span("render_fn");
19 FunctionRender::new(ctx, local_name, fn_).render(import_data) 18 FunctionRender::new(ctx, local_name, fn_).render(import_to_add)
20} 19}
21 20
22#[derive(Debug)] 21#[derive(Debug)]
@@ -39,10 +38,7 @@ impl<'a> FunctionRender<'a> {
39 FunctionRender { ctx, name, fn_, ast_node } 38 FunctionRender { ctx, name, fn_, ast_node }
40 } 39 }
41 40
42 fn render( 41 fn render(self, import_to_add: Option<ImportToAdd>) -> CompletionItem {
43 self,
44 import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>,
45 ) -> CompletionItem {
46 let params = self.params(); 42 let params = self.params();
47 CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), self.name.clone()) 43 CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), self.name.clone())
48 .kind(self.kind()) 44 .kind(self.kind())
@@ -50,7 +46,7 @@ impl<'a> FunctionRender<'a> {
50 .set_deprecated(self.ctx.is_deprecated(self.fn_)) 46 .set_deprecated(self.ctx.is_deprecated(self.fn_))
51 .detail(self.detail()) 47 .detail(self.detail())
52 .add_call_parens(self.ctx.completion, self.name, params) 48 .add_call_parens(self.ctx.completion, self.name, params)
53 .import_data(import_data) 49 .add_import(import_to_add)
54 .build() 50 .build()
55 } 51 }
56 52
diff --git a/crates/completion/src/render/macro_.rs b/crates/completion/src/render/macro_.rs
index b1284f201..b4ab32c6e 100644
--- a/crates/completion/src/render/macro_.rs
+++ b/crates/completion/src/render/macro_.rs
@@ -1,24 +1,22 @@
1//! Renderer for macro invocations. 1//! Renderer for macro invocations.
2 2
3use hir::{Documentation, HasSource, ModPath}; 3use hir::{Documentation, HasSource};
4use ide_helpers::insert_use::{ImportScope, MergeBehaviour};
5use syntax::display::macro_label; 4use syntax::display::macro_label;
6use test_utils::mark; 5use test_utils::mark;
7 6
8use crate::{ 7use crate::{
9 item::{CompletionItem, CompletionItemKind, CompletionKind}, 8 item::{CompletionItem, CompletionItemKind, CompletionKind, ImportToAdd},
10 render::RenderContext, 9 render::RenderContext,
11}; 10};
12 11
13pub(crate) fn render_macro<'a>( 12pub(crate) fn render_macro<'a>(
14 ctx: RenderContext<'a>, 13 ctx: RenderContext<'a>,
15 // TODO kb add some object instead of a tuple? 14 import_to_add: Option<ImportToAdd>,
16 import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>,
17 name: String, 15 name: String,
18 macro_: hir::MacroDef, 16 macro_: hir::MacroDef,
19) -> Option<CompletionItem> { 17) -> Option<CompletionItem> {
20 let _p = profile::span("render_macro"); 18 let _p = profile::span("render_macro");
21 MacroRender::new(ctx, name, macro_).render(import_data) 19 MacroRender::new(ctx, name, macro_).render(import_to_add)
22} 20}
23 21
24#[derive(Debug)] 22#[derive(Debug)]
@@ -40,10 +38,7 @@ impl<'a> MacroRender<'a> {
40 MacroRender { ctx, name, macro_, docs, bra, ket } 38 MacroRender { ctx, name, macro_, docs, bra, ket }
41 } 39 }
42 40
43 fn render( 41 fn render(&self, import_to_add: Option<ImportToAdd>) -> Option<CompletionItem> {
44 &self,
45 import_data: Option<(ModPath, ImportScope, Option<MergeBehaviour>)>,
46 ) -> Option<CompletionItem> {
47 // FIXME: Currently proc-macro do not have ast-node, 42 // FIXME: Currently proc-macro do not have ast-node,
48 // such that it does not have source 43 // such that it does not have source
49 if self.macro_.is_proc_macro() { 44 if self.macro_.is_proc_macro() {
@@ -55,7 +50,7 @@ impl<'a> MacroRender<'a> {
55 .kind(CompletionItemKind::Macro) 50 .kind(CompletionItemKind::Macro)
56 .set_documentation(self.docs.clone()) 51 .set_documentation(self.docs.clone())
57 .set_deprecated(self.ctx.is_deprecated(self.macro_)) 52 .set_deprecated(self.ctx.is_deprecated(self.macro_))
58 .import_data(import_data) 53 .add_import(import_to_add)
59 .detail(self.detail()); 54 .detail(self.detail());
60 55
61 let needs_bang = self.needs_bang(); 56 let needs_bang = self.needs_bang();