aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_completion/src/render/macro_.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ide_completion/src/render/macro_.rs')
-rw-r--r--crates/ide_completion/src/render/macro_.rs33
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 @@
3use hir::{Documentation, HasSource}; 3use hir::{Documentation, HasSource};
4use ide_db::SymbolKind; 4use ide_db::SymbolKind;
5use syntax::display::macro_label; 5use syntax::display::macro_label;
6use test_utils::mark;
7 6
8use crate::{ 7use 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)]
127mod tests { 128mod 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#"