]> git.lizzy.rs Git - rust.git/commitdiff
refpat & slicepat
authorJeroen Vannevel <jer_vannevel@outlook.com>
Fri, 14 Jan 2022 01:18:03 +0000 (01:18 +0000)
committerJeroen Vannevel <jer_vannevel@outlook.com>
Fri, 14 Jan 2022 01:32:12 +0000 (01:32 +0000)
crates/ide_assists/src/handlers/merge_match_arms.rs

index ecb7d4bf0799fe6d048cf561f77a2798a1062809..209d352c78d49401d1c4dd3568e840ed66751185 100644 (file)
@@ -146,6 +146,11 @@ fn recurse(
                 Some(ast::Pat::ParenPat(parentheses)) => {
                     recurse(&parentheses.pat(), map, ctx);
                 }
+                Some(ast::Pat::SlicePat(slice)) => {
+                    for slice_pat in slice.pats() {
+                        recurse(&Some(slice_pat), map, ctx);
+                    }
+                }
                 Some(ast::Pat::IdentPat(ident_pat)) => {
                     if let Some(name) = ident_pat.name() {
                         let pat_type = ctx.sema.type_of_pat(local_pat);
@@ -747,6 +752,41 @@ fn func(x: i32) {
         ((((variable)))) => "",
         _ => "other"
     };
+}
+        "#,
+        )
+    }
+
+    #[test]
+    fn merge_match_arms_refpat() {
+        check_assist_not_applicable(
+            merge_match_arms,
+            r#"
+fn func() {
+    let name = Some(String::from(""));
+    let n = String::from("");
+    match name {
+        Some(ref n) => $0"",
+        Some(n) => "",
+        _ => "other",
+    };
+}
+        "#,
+        )
+    }
+
+    #[test]
+    fn merge_match_arms_slice() {
+        check_assist_not_applicable(
+            merge_match_arms,
+            r#"
+fn func(binary: &[u8]) {
+    let space = b' ';
+    match binary {
+        [0x7f, b'E', b'L', b'F', ..] => $0"",
+        [space] => "",
+        _ => "other",
+    };
 }
         "#,
         )