about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-06-20 16:03:21 +0000
committerbors <bors@rust-lang.org>2022-06-20 16:03:21 +0000
commit9fdfa9f0ed47eeb729cd9256d70297eb6ba45011 (patch)
treeac745e10c7129257121e6207aea30d0a1085bad3
parenta1ff3ca0ed0b616b2609782579405bdacc04e707 (diff)
parent1f028403cdbb35cf1dc23350819e6f4e1ebd057e (diff)
downloadrust-9fdfa9f0ed47eeb729cd9256d70297eb6ba45011.tar.gz
rust-9fdfa9f0ed47eeb729cd9256d70297eb6ba45011.zip
Auto merge of #12596 - Veykril:completions, r=Veykril
fix: Don't trigger pattern completions when typing a wildcard pattern

Fixes https://github.com/rust-lang/rust-analyzer/issues/12592
-rw-r--r--crates/ide-completion/src/completions.rs6
-rw-r--r--crates/ide-completion/src/tests/pattern.rs12
2 files changed, 17 insertions, 1 deletions
diff --git a/crates/ide-completion/src/completions.rs b/crates/ide-completion/src/completions.rs
index a0725198f73..4f522ee7613 100644
--- a/crates/ide-completion/src/completions.rs
+++ b/crates/ide-completion/src/completions.rs
@@ -489,7 +489,11 @@ pub(super) fn complete_name(
         NameKind::Function => {
             item_list::trait_impl::complete_trait_impl_fn(acc, ctx, name);
         }
-        NameKind::IdentPat(pattern_ctx) => complete_patterns(acc, ctx, pattern_ctx),
+        NameKind::IdentPat(pattern_ctx) => {
+            if ctx.token.kind() != syntax::T![_] {
+                complete_patterns(acc, ctx, pattern_ctx)
+            }
+        }
         NameKind::Module(mod_under_caret) => {
             mod_::complete_mod(acc, ctx, mod_under_caret);
         }
diff --git a/crates/ide-completion/src/tests/pattern.rs b/crates/ide-completion/src/tests/pattern.rs
index d21f62f4adb..da9e5e20288 100644
--- a/crates/ide-completion/src/tests/pattern.rs
+++ b/crates/ide-completion/src/tests/pattern.rs
@@ -14,6 +14,18 @@ fn check(ra_fixture: &str, expect: Expect) {
 }
 
 #[test]
+fn wildcard() {
+    check(
+        r#"
+fn quux() {
+    let _$0
+}
+"#,
+        expect![""],
+    );
+}
+
+#[test]
 fn ident_rebind_pat() {
     check_empty(
         r#"