Merge pull request #22247 from A4-Tacks/unwrap-branch-in-match-arm

fix: Fix unwrap_branch in match_arm
diff --git a/crates/ide-assists/src/handlers/unwrap_branch.rs b/crates/ide-assists/src/handlers/unwrap_branch.rs
index a018451..a582af4 100644
--- a/crates/ide-assists/src/handlers/unwrap_branch.rs
+++ b/crates/ide-assists/src/handlers/unwrap_branch.rs
@@ -70,6 +70,11 @@
                 _ => return None,
             }
         };
+        if ast::MatchArm::cast(container.parent()?).is_some() {
+            replacement = editor.make().tail_only_block_expr(replacement.into());
+            prefer_container = Some(container.clone());
+            break IndentLevel::from_node(&container);
+        }
     };
     let is_branch =
         !block.is_standalone() || place.syntax().parent().and_then(ast::MatchArm::cast).is_some();
@@ -573,6 +578,88 @@
     }
 
     #[test]
+    fn simple_if_in_match_arm() {
+        check_assist(
+            unwrap_branch,
+            r#"
+fn main() {
+    match 1 {
+        1 => if true {$0
+            foo();
+        }
+        _ => (),
+    }
+}
+"#,
+            r#"
+fn main() {
+    match 1 {
+        1 => {
+            foo();
+        }
+        _ => (),
+    }
+}
+"#,
+        );
+
+        check_assist(
+            unwrap_branch,
+            r#"
+fn main() {
+    match 1 {
+        1 => if true {
+            foo();
+        } else {$0
+            bar();
+        }
+        _ => (),
+    }
+}
+"#,
+            r#"
+fn main() {
+    match 1 {
+        1 => {
+            bar();
+        }
+        _ => (),
+    }
+}
+"#,
+        );
+    }
+
+    #[test]
+    fn simple_match_in_match_arm() {
+        check_assist(
+            unwrap_branch,
+            r#"
+fn main() {
+    match 1 {
+        1 => match () {
+            _ => {$0
+                foo();
+            }
+        }
+        _ => (),
+    }
+}
+"#,
+            r#"
+fn main() {
+    match 1 {
+        1 => {
+            foo();
+        }
+        _ => (),
+    }
+}
+"#,
+        );
+    }
+
+    #[test]
     fn simple_loop() {
         check_assist(
             unwrap_branch,