about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMatthew Kuo <matthew.kuo@dialexa.com>2020-03-04 01:33:32 -0600
committerMatthew Kuo <matthew.kuo@dialexa.com>2020-03-04 01:33:32 -0600
commitb4788a739b5dd040a969135bf46dc633c39fce16 (patch)
treece038f8904e9eb7c3ea887ad981df01e28e4f03b /src
parent54561148581f002793ab42893de4e3f7c26bd7ed (diff)
downloadrust-b4788a739b5dd040a969135bf46dc633c39fce16.tar.gz
rust-b4788a739b5dd040a969135bf46dc633c39fce16.zip
test(pattern): harden tests for or-patterns with slice-patterns
Some of the nested OR paths were being missed
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/or-patterns/slice-patterns.rs14
-rw-r--r--src/test/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs17
2 files changed, 27 insertions, 4 deletions
diff --git a/src/test/ui/or-patterns/slice-patterns.rs b/src/test/ui/or-patterns/slice-patterns.rs
index 2f2e865d985..2526f048655 100644
--- a/src/test/ui/or-patterns/slice-patterns.rs
+++ b/src/test/ui/or-patterns/slice-patterns.rs
@@ -20,8 +20,8 @@ enum Test {
 
 fn test(foo: &[Option<Test>]) -> MatchArm {
     match foo {
-        [.., Some(Test::Foo | Test::Qux)] => MatchArm::Arm(0),
-        [Some(Test::Foo), .., Some(Test::Bar | Test::Baz)] => MatchArm::Arm(1),
+        [.., Some(Test::Qux | Test::Foo)] => MatchArm::Arm(0),
+        [Some(Test::Foo), .., Some(Test::Baz | Test::Bar)] => MatchArm::Arm(1),
         [.., Some(Test::Bar | Test::Baz), _] => MatchArm::Arm(2),
         _ => MatchArm::Wild,
     }
@@ -35,8 +35,18 @@ fn main() {
         Some(Test::Qux),
     ];
 
+    // path 1a
     assert_eq!(test(&foo), MatchArm::Arm(0));
+    // path 1b
+    assert_eq!(test(&[Some(Test::Bar), Some(Test::Foo)]), MatchArm::Arm(0));
+    // path 2a
     assert_eq!(test(&foo[..3]), MatchArm::Arm(1));
+    // path 2b
+    assert_eq!(test(&[Some(Test::Foo), Some(Test::Foo), Some(Test::Bar)]), MatchArm::Arm(1));
+    // path 3a
     assert_eq!(test(&foo[1..3]), MatchArm::Arm(2));
+    // path 3b
+    assert_eq!(test(&[Some(Test::Bar), Some(Test::Baz), Some(Test::Baz), Some(Test::Bar)]), MatchArm::Arm(2));
+    // path 4
     assert_eq!(test(&foo[4..]), MatchArm::Wild);
 }
diff --git a/src/test/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs b/src/test/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs
index 154df74cc33..65c2b3741b3 100644
--- a/src/test/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs
+++ b/src/test/ui/pattern/bindings-after-at/or-patterns-slice-patterns.rs
@@ -21,7 +21,7 @@ enum Test {
 
 fn test(foo: &[Option<Test>]) -> MatchArm {
     match foo {
-        bar @ [Some(Test::Foo), .., Some(Test::Foo | Test::Qux)] => {
+        bar @ [Some(Test::Foo), .., Some(Test::Qux | Test::Foo)] => {
             assert_eq!(bar, foo);
 
             MatchArm::Arm(0)
@@ -36,8 +36,21 @@ fn test(foo: &[Option<Test>]) -> MatchArm {
 }
 
 fn main() {
-    let foo = vec![Some(Test::Foo), Some(Test::Bar), Some(Test::Baz), Some(Test::Qux)];
+    let foo = vec![
+        Some(Test::Foo),
+        Some(Test::Bar),
+        Some(Test::Baz),
+        Some(Test::Qux),
+    ];
+
+    // path 1a
     assert_eq!(test(&foo), MatchArm::Arm(0));
+    // path 1b
+    assert_eq!(test(&[Some(Test::Foo), Some(Test::Bar), Some(Test::Foo)]), MatchArm::Arm(0));
+    // path 2a
     assert_eq!(test(&foo[..3]), MatchArm::Arm(1));
+    // path 2b
+    assert_eq!(test(&[Some(Test::Bar), Some(Test::Qux), Some(Test::Baz)]), MatchArm::Arm(1));
+    // path 3
     assert_eq!(test(&foo[1..2]), MatchArm::Wild);
 }