Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #21706 from A4-Tacks/redundant-enum-variant-pat
fix: no complete enum variant qualifier in pat
Shoyu Vanilla (Flint) 8 weeks ago
parent d335101 · parent 423c466 · commit df080db
-rw-r--r--crates/ide-completion/src/completions/pattern.rs2
-rw-r--r--crates/ide-completion/src/tests/pattern.rs32
-rw-r--r--crates/ide-completion/src/tests/record.rs6
3 files changed, 29 insertions, 11 deletions
diff --git a/crates/ide-completion/src/completions/pattern.rs b/crates/ide-completion/src/completions/pattern.rs
index eeb2c65e48..6e9328165d 100644
--- a/crates/ide-completion/src/completions/pattern.rs
+++ b/crates/ide-completion/src/completions/pattern.rs
@@ -95,7 +95,7 @@ pub(crate) fn complete_pattern(
if refutable || single_variant_enum(variant.parent_enum(ctx.db)) =>
{
acc.add_variant_pat(ctx, pattern_ctx, None, variant, Some(name.clone()));
- true
+ false
}
hir::ModuleDef::Adt(hir::Adt::Enum(e)) => refutable || single_variant_enum(e),
hir::ModuleDef::Const(..) => refutable,
diff --git a/crates/ide-completion/src/tests/pattern.rs b/crates/ide-completion/src/tests/pattern.rs
index b8728028bb..0d85f2e9ad 100644
--- a/crates/ide-completion/src/tests/pattern.rs
+++ b/crates/ide-completion/src/tests/pattern.rs
@@ -122,7 +122,6 @@ fn foo() {
st Record
st Tuple
st Unit
- ev TupleV
bn Record {…} Record { field$1 }$0
bn Tuple(…) Tuple($1)$0
bn TupleV(…) TupleV($1)$0
@@ -159,8 +158,6 @@ fn foo(foo: Foo) { match foo { Foo { x: $0 } } }
expect![[r#"
en Bar
st Foo
- ev Nil
- ev Value
bn Foo {…} Foo { x$1 }$0
bn Nil Nil$0
bn Value Value$0
@@ -189,7 +186,6 @@ fn foo() {
st Record
st Tuple
st Unit
- ev Variant
bn Record {…} Record { field$1 }$0
bn Tuple(…) Tuple($1)$0
bn Variant Variant$0
@@ -355,6 +351,34 @@ fn func() {
}
#[test]
+fn enum_unqualified() {
+ check_with_base_items(
+ r#"
+use Enum::*;
+fn func() {
+ if let $0 = unknown {}
+}
+"#,
+ expect![[r#"
+ ct CONST
+ en Enum
+ ma makro!(…) macro_rules! makro
+ md module
+ st Record
+ st Tuple
+ st Unit
+ bn Record {…} Record { field$1 }$0
+ bn RecordV {…} RecordV { field$1 }$0
+ bn Tuple(…) Tuple($1)$0
+ bn TupleV(…) TupleV($1)$0
+ bn UnitV UnitV$0
+ kw mut
+ kw ref
+ "#]],
+ );
+}
+
+#[test]
fn completes_in_record_field_pat() {
check(
r#"
diff --git a/crates/ide-completion/src/tests/record.rs b/crates/ide-completion/src/tests/record.rs
index 045b2d03b0..c1274f6640 100644
--- a/crates/ide-completion/src/tests/record.rs
+++ b/crates/ide-completion/src/tests/record.rs
@@ -61,8 +61,6 @@ fn foo(baz: Baz) {
en Baz
en Result
md core
- ev Err
- ev Ok
bn Baz::Bar Baz::Bar$0
bn Baz::Foo Baz::Foo$0
bn Err(…) Err($1)$0
@@ -89,10 +87,6 @@ fn foo(baz: Baz) {
en Baz
en Result
md core
- ev Bar
- ev Err
- ev Foo
- ev Ok
bn Bar Bar$0
bn Err(…) Err($1)$0
bn Foo Foo$0