about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeroen Vannevel <jer_vannevel@outlook.com>2022-01-14 00:35:21 +0000
committerJeroen Vannevel <jer_vannevel@outlook.com>2022-01-14 01:32:12 +0000
commitc955ea11b42dc7c0ac91fe1a12427171b86be4b7 (patch)
tree79b95790d8845585fd417f6bfe406add3f322df3
parenta347cb5f863fbaf62e2ebc4d7ae8842f2efe8dec (diff)
downloadrust-c955ea11b42dc7c0ac91fe1a12427171b86be4b7.tar.gz
rust-c955ea11b42dc7c0ac91fe1a12427171b86be4b7.zip
support TuplePat
-rw-r--r--crates/ide_assists/src/handlers/merge_match_arms.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/crates/ide_assists/src/handlers/merge_match_arms.rs b/crates/ide_assists/src/handlers/merge_match_arms.rs
index 0ef4678d118..ff1804fe95d 100644
--- a/crates/ide_assists/src/handlers/merge_match_arms.rs
+++ b/crates/ide_assists/src/handlers/merge_match_arms.rs
@@ -131,6 +131,11 @@ fn get_arm_types(context: &AssistContext, arm: &MatchArm) -> HashMap<String, Opt
                         recurse(&Some(field), map, ctx);
                     }
                 }
+                Some(ast::Pat::TuplePat(tuple)) => {
+                    for field in tuple.fields() {
+                        recurse(&Some(field), map, ctx);
+                    }
+                }
                 Some(ast::Pat::RecordPat(record)) => {
                     if let Some(field_list) = record.record_pat_field_list() {
                         for field in field_list.fields() {
@@ -711,4 +716,19 @@ fn main(msg: Message) {
         "#,
         )
     }
+
+    #[test]
+    fn merge_match_arms_tuple() {
+        check_assist_not_applicable(
+            merge_match_arms,
+            r#"
+fn func() {
+    match (0, "boo") {
+        (x, y) => $0"",
+        (y, x) => "",
+    };
+}
+        "#,
+        )
+    }
 }