about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-06-04 23:02:50 +0000
committerbors <bors@rust-lang.org>2022-06-04 23:02:50 +0000
commit02c6c191528cfee434bda54e5d9ef57c9c3d3981 (patch)
tree40f6cb2a13dbba2601ee919b2a124ce92edf969c
parent044b6ddca93375320db7f33744bf14a061b016e6 (diff)
parentfbffe736121d1eba7eb3fc1bf4b115c3cca672cf (diff)
downloadrust-02c6c191528cfee434bda54e5d9ef57c9c3d3981.tar.gz
rust-02c6c191528cfee434bda54e5d9ef57c9c3d3981.zip
Auto merge of #12467 - Veykril:assist-fix, r=Veykril
fix: Fix match to if let assist for wildcard pats
-rw-r--r--crates/ide-assists/src/handlers/replace_if_let_with_match.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/replace_if_let_with_match.rs b/crates/ide-assists/src/handlers/replace_if_let_with_match.rs
index 1c403eafe30..2b68b2dc03a 100644
--- a/crates/ide-assists/src/handlers/replace_if_let_with_match.rs
+++ b/crates/ide-assists/src/handlers/replace_if_let_with_match.rs
@@ -256,6 +256,7 @@ fn pick_pattern_and_expr_order(
 ) -> Option<(ast::Pat, ast::Expr, ast::Expr)> {
     let res = match (pat, pat2) {
         (ast::Pat::WildcardPat(_), _) => return None,
+        (pat, ast::Pat::WildcardPat(_)) => (pat, expr, expr2),
         (pat, _) if is_empty_expr(&expr2) => (pat, expr, expr2),
         (_, pat) if is_empty_expr(&expr) => (pat, expr2, expr),
         (pat, pat2) => match (binds_name(sema, &pat), binds_name(sema, &pat2)) {
@@ -971,4 +972,28 @@ impl VariantData {
 }           "#,
         )
     }
+
+    #[test]
+    fn test_replace_match_with_if_let_forces_else() {
+        check_assist(
+            replace_match_with_if_let,
+            r#"
+fn main() {
+    match$0 0 {
+        0 => (),
+        _ => code(),
+    }
+}
+"#,
+            r#"
+fn main() {
+    if let 0 = 0 {
+        ()
+    } else {
+        code()
+    }
+}
+"#,
+        )
+    }
 }