Auto merge of #12098 - jonas-schievink:macro-rules-snippet, r=jonas-schievink

fix: show `macro_rules` snippet in blocks

fixes https://github.com/rust-lang/rust-analyzer/issues/12092
This commit is contained in:
bors 2022-04-27 12:41:29 +00:00
commit 9f69d024ed
2 changed files with 27 additions and 20 deletions

View file

@ -43,7 +43,7 @@ pub(crate) fn complete_expr_snippet(acc: &mut Completions, ctx: &CompletionConte
} }
pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionContext) { pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionContext) {
if !ctx.expects_item() if !(ctx.expects_item() || ctx.has_block_expr_parent())
|| ctx.previous_token_is(T![unsafe]) || ctx.previous_token_is(T![unsafe])
|| ctx.path_qual().is_some() || ctx.path_qual().is_some()
|| ctx.has_impl_or_trait_prev_sibling() || ctx.has_impl_or_trait_prev_sibling()
@ -63,11 +63,13 @@ pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionConte
add_custom_completions(acc, ctx, cap, SnippetScope::Item); add_custom_completions(acc, ctx, cap, SnippetScope::Item);
} }
let mut item = snippet( // Test-related snippets shouldn't be shown in blocks.
ctx, if !ctx.has_block_expr_parent() {
cap, let mut item = snippet(
"tmod (Test module)", ctx,
"\ cap,
"tmod (Test module)",
"\
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
@ -77,22 +79,23 @@ mod tests {
$0 $0
} }
}", }",
); );
item.lookup_by("tmod"); item.lookup_by("tmod");
item.add_to(acc); item.add_to(acc);
let mut item = snippet( let mut item = snippet(
ctx, ctx,
cap, cap,
"tfn (Test function)", "tfn (Test function)",
"\ "\
#[test] #[test]
fn ${1:feature}() { fn ${1:feature}() {
$0 $0
}", }",
); );
item.lookup_by("tfn"); item.lookup_by("tfn");
item.add_to(acc); item.add_to(acc);
}
let item = snippet( let item = snippet(
ctx, ctx,

View file

@ -153,6 +153,7 @@ impl Unit {
kw return kw return
sn pd sn pd
sn ppd sn ppd
sn macro_rules
kw self kw self
kw super kw super
kw crate kw crate
@ -246,10 +247,11 @@ fn complete_in_block() {
kw return kw return
sn pd sn pd
sn ppd sn ppd
sn macro_rules
kw self kw self
kw super kw super
kw crate kw crate
fn foo() fn() fn foo() fn()
bt u32 bt u32
"#]], "#]],
) )
@ -293,10 +295,11 @@ fn complete_after_if_expr() {
kw return kw return
sn pd sn pd
sn ppd sn ppd
sn macro_rules
kw self kw self
kw super kw super
kw crate kw crate
fn foo() fn() fn foo() fn()
bt u32 bt u32
"#]], "#]],
) )
@ -366,10 +369,11 @@ fn completes_in_loop_ctx() {
kw return kw return
sn pd sn pd
sn ppd sn ppd
sn macro_rules
kw self kw self
kw super kw super
kw crate kw crate
fn my() fn() fn my() fn()
bt u32 bt u32
"#]], "#]],
); );