]> git.lizzy.rs Git - rust.git/commitdiff
Auto merge of #12467 - Veykril:assist-fix, r=Veykril
authorbors <bors@rust-lang.org>
Sat, 4 Jun 2022 23:02:50 +0000 (23:02 +0000)
committerbors <bors@rust-lang.org>
Sat, 4 Jun 2022 23:02:50 +0000 (23:02 +0000)
fix: Fix match to if let assist for wildcard pats

crates/ide-assists/src/handlers/replace_if_let_with_match.rs

index 1c403eafe303074938afb01e6468e180328e2237..2b68b2dc03a042feb6118ca517ce5be68cc86e01 100644 (file)
@@ -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 @@ pub fn is_struct(&self) -> bool {
 }           "#,
         )
     }
+
+    #[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()
+    }
+}
+"#,
+        )
+    }
 }