fix: add ! to macro completions with existing arg

This commit is contained in:
Aleksey Kladov 2021-08-08 15:49:00 +03:00
parent 546d718a7e
commit 0e437c809b

View file

@ -49,15 +49,19 @@ impl<'a> MacroRender<'a> {
.add_import(import_to_add) .add_import(import_to_add)
.set_detail(self.detail()); .set_detail(self.detail());
let needs_bang = self.needs_bang(); let needs_bang = !(self.ctx.completion.in_use_tree()
|| matches!(self.ctx.completion.path_call_kind(), Some(CallKind::Mac)));
let has_parens = self.ctx.completion.path_call_kind().is_some();
match self.ctx.snippet_cap() { match self.ctx.snippet_cap() {
Some(cap) if needs_bang => { Some(cap) if needs_bang && !has_parens => {
let snippet = self.snippet(); let snippet = format!("{}!{}$0{}", self.name, self.bra, self.ket);
let lookup = self.lookup(); let lookup = self.banged_name();
item.insert_snippet(cap, snippet).lookup_by(lookup); item.insert_snippet(cap, snippet).lookup_by(lookup);
} }
None if needs_bang => { _ if needs_bang => {
item.insert_text(self.banged_name()); let lookup = self.banged_name();
item.insert_text(self.banged_name()).lookup_by(lookup);
} }
_ => { _ => {
cov_mark::hit!(dont_insert_macro_call_parens_unncessary); cov_mark::hit!(dont_insert_macro_call_parens_unncessary);
@ -83,14 +87,6 @@ impl<'a> MacroRender<'a> {
} }
} }
fn snippet(&self) -> String {
format!("{}!{}$0{}", self.name, self.bra, self.ket)
}
fn lookup(&self) -> String {
self.banged_name()
}
fn banged_name(&self) -> String { fn banged_name(&self) -> String {
format!("{}!", self.name) format!("{}!", self.name)
} }
@ -163,6 +159,25 @@ fn main() { frobnicate!(); }
); );
} }
#[test]
fn add_bang_to_parens() {
check_edit(
"frobnicate!",
r#"
macro_rules! frobnicate { () => () }
fn main() {
frob$0()
}
"#,
r#"
macro_rules! frobnicate { () => () }
fn main() {
frobnicate!()
}
"#,
);
}
#[test] #[test]
fn guesses_macro_braces() { fn guesses_macro_braces() {
check_edit( check_edit(