diff options
Diffstat (limited to 'crates/ide_completion/src/render/macro_.rs')
-rw-r--r-- | crates/ide_completion/src/render/macro_.rs | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/crates/ide_completion/src/render/macro_.rs b/crates/ide_completion/src/render/macro_.rs index a4535786f..3fa21ba7c 100644 --- a/crates/ide_completion/src/render/macro_.rs +++ b/crates/ide_completion/src/render/macro_.rs | |||
@@ -3,7 +3,6 @@ | |||
3 | use hir::{Documentation, HasSource}; | 3 | use hir::{Documentation, HasSource}; |
4 | use ide_db::SymbolKind; | 4 | use ide_db::SymbolKind; |
5 | use syntax::display::macro_label; | 5 | use syntax::display::macro_label; |
6 | use test_utils::mark; | ||
7 | 6 | ||
8 | use crate::{ | 7 | use crate::{ |
9 | item::{CompletionItem, CompletionKind, ImportEdit}, | 8 | item::{CompletionItem, CompletionKind, ImportEdit}, |
@@ -40,29 +39,31 @@ impl<'a> MacroRender<'a> { | |||
40 | } | 39 | } |
41 | 40 | ||
42 | fn render(&self, import_to_add: Option<ImportEdit>) -> Option<CompletionItem> { | 41 | fn render(&self, import_to_add: Option<ImportEdit>) -> Option<CompletionItem> { |
43 | let mut builder = | 42 | let mut item = |
44 | CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), &self.label()) | 43 | CompletionItem::new(CompletionKind::Reference, self.ctx.source_range(), &self.label()); |
45 | .kind(SymbolKind::Macro) | 44 | item.kind(SymbolKind::Macro) |
46 | .set_documentation(self.docs.clone()) | 45 | .set_documentation(self.docs.clone()) |
47 | .set_deprecated(self.ctx.is_deprecated(self.macro_)) | 46 | .set_deprecated(self.ctx.is_deprecated(self.macro_)) |
48 | .add_import(import_to_add) | 47 | .add_import(import_to_add) |
49 | .set_detail(self.detail()); | 48 | .set_detail(self.detail()); |
50 | 49 | ||
51 | let needs_bang = self.needs_bang(); | 50 | let needs_bang = self.needs_bang(); |
52 | builder = match self.ctx.snippet_cap() { | 51 | match self.ctx.snippet_cap() { |
53 | Some(cap) if needs_bang => { | 52 | Some(cap) if needs_bang => { |
54 | let snippet = self.snippet(); | 53 | let snippet = self.snippet(); |
55 | let lookup = self.lookup(); | 54 | let lookup = self.lookup(); |
56 | builder.insert_snippet(cap, snippet).lookup_by(lookup) | 55 | item.insert_snippet(cap, snippet).lookup_by(lookup); |
56 | } | ||
57 | None if needs_bang => { | ||
58 | item.insert_text(self.banged_name()); | ||
57 | } | 59 | } |
58 | None if needs_bang => builder.insert_text(self.banged_name()), | ||
59 | _ => { | 60 | _ => { |
60 | mark::hit!(dont_insert_macro_call_parens_unncessary); | 61 | cov_mark::hit!(dont_insert_macro_call_parens_unncessary); |
61 | builder.insert_text(&self.name) | 62 | item.insert_text(&self.name); |
62 | } | 63 | } |
63 | }; | 64 | }; |
64 | 65 | ||
65 | Some(builder.build()) | 66 | Some(item.build()) |
66 | } | 67 | } |
67 | 68 | ||
68 | fn needs_bang(&self) -> bool { | 69 | fn needs_bang(&self) -> bool { |
@@ -125,13 +126,11 @@ fn guess_macro_braces(macro_name: &str, docs: &str) -> (&'static str, &'static s | |||
125 | 126 | ||
126 | #[cfg(test)] | 127 | #[cfg(test)] |
127 | mod tests { | 128 | mod tests { |
128 | use test_utils::mark; | ||
129 | |||
130 | use crate::test_utils::check_edit; | 129 | use crate::test_utils::check_edit; |
131 | 130 | ||
132 | #[test] | 131 | #[test] |
133 | fn dont_insert_macro_call_parens_unncessary() { | 132 | fn dont_insert_macro_call_parens_unncessary() { |
134 | mark::check!(dont_insert_macro_call_parens_unncessary); | 133 | cov_mark::check!(dont_insert_macro_call_parens_unncessary); |
135 | check_edit( | 134 | check_edit( |
136 | "frobnicate!", | 135 | "frobnicate!", |
137 | r#" | 136 | r#" |