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) {
if !ctx.expects_item()
if !(ctx.expects_item() || ctx.has_block_expr_parent())
|| ctx.previous_token_is(T![unsafe])
|| ctx.path_qual().is_some()
|| ctx.has_impl_or_trait_prev_sibling()
@ -63,6 +63,8 @@ pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionConte
add_custom_completions(acc, ctx, cap, SnippetScope::Item);
}
// Test-related snippets shouldn't be shown in blocks.
if !ctx.has_block_expr_parent() {
let mut item = snippet(
ctx,
cap,
@ -93,6 +95,7 @@ fn ${1:feature}() {
);
item.lookup_by("tfn");
item.add_to(acc);
}
let item = snippet(
ctx,

View File

@ -153,6 +153,7 @@ fn local_func() {}
kw return
sn pd
sn ppd
sn macro_rules
kw self
kw super
kw crate
@ -246,6 +247,7 @@ fn foo() {
kw return
sn pd
sn ppd
sn macro_rules
kw self
kw super
kw crate
@ -293,6 +295,7 @@ fn foo() {
kw return
sn pd
sn ppd
sn macro_rules
kw self
kw super
kw crate
@ -366,6 +369,7 @@ fn completes_in_loop_ctx() {
kw return
sn pd
sn ppd
sn macro_rules
kw self
kw super
kw crate