Skip to content

Commit 9f69d02

Browse files
committed
Auto merge of rust-lang#12098 - jonas-schievink:macro-rules-snippet, r=jonas-schievink
fix: show `macro_rules` snippet in blocks fixes rust-lang/rust-analyzer#12092
2 parents 9e6ca0d + 0060d59 commit 9f69d02

File tree

2 files changed

+28
-21
lines changed

2 files changed

+28
-21
lines changed

crates/ide_completion/src/completions/snippet.rs

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ pub(crate) fn complete_expr_snippet(acc: &mut Completions, ctx: &CompletionConte
4343
}
4444

4545
pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionContext) {
46-
if !ctx.expects_item()
46+
if !(ctx.expects_item() || ctx.has_block_expr_parent())
4747
|| ctx.previous_token_is(T![unsafe])
4848
|| ctx.path_qual().is_some()
4949
|| ctx.has_impl_or_trait_prev_sibling()
@@ -63,11 +63,13 @@ pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionConte
6363
add_custom_completions(acc, ctx, cap, SnippetScope::Item);
6464
}
6565

66-
let mut item = snippet(
67-
ctx,
68-
cap,
69-
"tmod (Test module)",
70-
"\
66+
// Test-related snippets shouldn't be shown in blocks.
67+
if !ctx.has_block_expr_parent() {
68+
let mut item = snippet(
69+
ctx,
70+
cap,
71+
"tmod (Test module)",
72+
"\
7173
#[cfg(test)]
7274
mod tests {
7375
use super::*;
@@ -77,22 +79,23 @@ mod tests {
7779
$0
7880
}
7981
}",
80-
);
81-
item.lookup_by("tmod");
82-
item.add_to(acc);
83-
84-
let mut item = snippet(
85-
ctx,
86-
cap,
87-
"tfn (Test function)",
88-
"\
82+
);
83+
item.lookup_by("tmod");
84+
item.add_to(acc);
85+
86+
let mut item = snippet(
87+
ctx,
88+
cap,
89+
"tfn (Test function)",
90+
"\
8991
#[test]
9092
fn ${1:feature}() {
9193
$0
9294
}",
93-
);
94-
item.lookup_by("tfn");
95-
item.add_to(acc);
95+
);
96+
item.lookup_by("tfn");
97+
item.add_to(acc);
98+
}
9699

97100
let item = snippet(
98101
ctx,

crates/ide_completion/src/tests/expression.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ impl Unit {
153153
kw return
154154
sn pd
155155
sn ppd
156+
sn macro_rules
156157
kw self
157158
kw super
158159
kw crate
@@ -246,10 +247,11 @@ fn complete_in_block() {
246247
kw return
247248
sn pd
248249
sn ppd
250+
sn macro_rules
249251
kw self
250252
kw super
251253
kw crate
252-
fn foo() fn()
254+
fn foo() fn()
253255
bt u32
254256
"#]],
255257
)
@@ -293,10 +295,11 @@ fn complete_after_if_expr() {
293295
kw return
294296
sn pd
295297
sn ppd
298+
sn macro_rules
296299
kw self
297300
kw super
298301
kw crate
299-
fn foo() fn()
302+
fn foo() fn()
300303
bt u32
301304
"#]],
302305
)
@@ -366,10 +369,11 @@ fn completes_in_loop_ctx() {
366369
kw return
367370
sn pd
368371
sn ppd
372+
sn macro_rules
369373
kw self
370374
kw super
371375
kw crate
372-
fn my() fn()
376+
fn my() fn()
373377
bt u32
374378
"#]],
375379
);

0 commit comments

Comments
 (0)