about summary refs log tree commit diff
diff options
context:
space:
mode:
authorouz-a <oguz.agcayazi@gmail.com>2022-08-17 13:21:03 +0300
committerouz-a <oguz.agcayazi@gmail.com>2022-08-17 13:21:03 +0300
commitddf23cbebaa74897a3b1d1f14463fe21b171fdeb (patch)
treeb651868fadc1dd58ff39c4a20e0f278d591654e9
parent661d488bfd7cd4888400a23b9f6ea9bb15cacaf5 (diff)
downloadrust-ddf23cbebaa74897a3b1d1f14463fe21b171fdeb.tar.gz
rust-ddf23cbebaa74897a3b1d1f14463fe21b171fdeb.zip
add new test and combine old ones
-rw-r--r--src/test/ui/or-patterns/inner-or-pat-2.rs13
-rw-r--r--src/test/ui/or-patterns/inner-or-pat-3.rs15
-rw-r--r--src/test/ui/or-patterns/inner-or-pat-4.rs13
-rw-r--r--src/test/ui/or-patterns/inner-or-pat.or3.stderr (renamed from src/test/ui/or-patterns/inner-or-pat-2.stderr)2
-rw-r--r--src/test/ui/or-patterns/inner-or-pat.or4.stderr (renamed from src/test/ui/or-patterns/inner-or-pat-4.stderr)2
-rw-r--r--src/test/ui/or-patterns/inner-or-pat.rs67
6 files changed, 65 insertions, 47 deletions
diff --git a/src/test/ui/or-patterns/inner-or-pat-2.rs b/src/test/ui/or-patterns/inner-or-pat-2.rs
deleted file mode 100644
index 3053d973453..00000000000
--- a/src/test/ui/or-patterns/inner-or-pat-2.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#[allow(unused_variables)]
-#[allow(unused_parens)]
-fn main() {
-    let x = "foo";
-    match x {
-        x @ ((("h" | "ho" | "yo" | ("dude" | "w")) | () | "nop") | ("hey" | "gg")) |
-        //~^ ERROR mismatched types
-        x @ ("black" | "pink") |
-        x @ ("red" | "blue") => {
-        }
-        _ => (),
-    }
-}
diff --git a/src/test/ui/or-patterns/inner-or-pat-3.rs b/src/test/ui/or-patterns/inner-or-pat-3.rs
deleted file mode 100644
index f6fe8a4dd59..00000000000
--- a/src/test/ui/or-patterns/inner-or-pat-3.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-
-#[allow(unreachable_patterns)]
-#[allow(unused_variables)]
-#[allow(unused_parens)]
-fn main() {
-    let x = "foo";
-
-    match x {
-        x @ ("foo" | "bar") |
-        (x @ "red" | (x @ "blue" | x @ "red")) => {
-        }
-        _ => (),
-    }
-}
diff --git a/src/test/ui/or-patterns/inner-or-pat-4.rs b/src/test/ui/or-patterns/inner-or-pat-4.rs
deleted file mode 100644
index fe771e2e930..00000000000
--- a/src/test/ui/or-patterns/inner-or-pat-4.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#[allow(unused_variables)]
-#[allow(unused_parens)]
-fn main() {
-    let x = "foo";
-
-    match x {
-        x @ ("foo" | "bar") |
-        (x @ "red" | (x @ "blue" |  "red")) => {
-        //~^ variable `x` is not bound in all patterns
-        }
-        _ => (),
-    }
-}
diff --git a/src/test/ui/or-patterns/inner-or-pat-2.stderr b/src/test/ui/or-patterns/inner-or-pat.or3.stderr
index 505b6c64a22..2236a38c37b 100644
--- a/src/test/ui/or-patterns/inner-or-pat-2.stderr
+++ b/src/test/ui/or-patterns/inner-or-pat.or3.stderr
@@ -1,5 +1,5 @@
 error[E0308]: mismatched types
-  --> $DIR/inner-or-pat-2.rs:6:54
+  --> $DIR/inner-or-pat.rs:38:54
    |
 LL |     match x {
    |           - this expression has type `&str`
diff --git a/src/test/ui/or-patterns/inner-or-pat-4.stderr b/src/test/ui/or-patterns/inner-or-pat.or4.stderr
index 177c7f98312..058873ff5ff 100644
--- a/src/test/ui/or-patterns/inner-or-pat-4.stderr
+++ b/src/test/ui/or-patterns/inner-or-pat.or4.stderr
@@ -1,5 +1,5 @@
 error[E0408]: variable `x` is not bound in all patterns
-  --> $DIR/inner-or-pat-4.rs:8:37
+  --> $DIR/inner-or-pat.rs:53:37
    |
 LL |         (x @ "red" | (x @ "blue" |  "red")) => {
    |                       -             ^^^^^ pattern doesn't bind `x`
diff --git a/src/test/ui/or-patterns/inner-or-pat.rs b/src/test/ui/or-patterns/inner-or-pat.rs
index c49b04aa65b..f4cf4b0c188 100644
--- a/src/test/ui/or-patterns/inner-or-pat.rs
+++ b/src/test/ui/or-patterns/inner-or-pat.rs
@@ -1,8 +1,16 @@
-// run-pass
+// revisions: or1 or2 or3 or4 or5
+// [or1] run-pass
+// [or2] run-pass
+// [or5] run-pass
 
-#[allow(unused_variables)]
-#[allow(unused_parens)]
-fn main() {
+#![allow(unreachable_patterns)]
+#![allow(unused_variables)]
+#![allow(unused_parens)]
+#![allow(dead_code)]
+
+
+
+fn foo() {
     let x = "foo";
     match x {
         x @ ((("h" | "ho" | "yo" | ("dude" | "w")) | "no" | "nop") | ("hey" | "gg")) |
@@ -12,3 +20,54 @@ fn main() {
         _ => (),
     }
 }
+
+fn bar() {
+    let x = "foo";
+    match x {
+        x @ ("foo" | "bar") |
+        (x @ "red" | (x @ "blue" | x @ "red")) => {
+        }
+        _ => (),
+    }
+}
+
+#[cfg(or3)]
+fn zot() {
+    let x = "foo";
+    match x {
+        x @ ((("h" | "ho" | "yo" | ("dude" | "w")) | () | "nop") | ("hey" | "gg")) |
+        //[or3]~^ ERROR mismatched types
+        x @ ("black" | "pink") |
+        x @ ("red" | "blue") => {
+        }
+        _ => (),
+    }
+}
+
+
+#[cfg(or4)]
+fn hey() {
+    let x = "foo";
+    match x {
+        x @ ("foo" | "bar") |
+        (x @ "red" | (x @ "blue" |  "red")) => {
+        //[or4]~^ variable `x` is not bound in all patterns
+        }
+        _ => (),
+    }
+}
+
+fn don() {
+    enum Foo {
+        A,
+        B,
+        C,
+    }
+
+    match Foo::A {
+        | _foo @ (Foo::A | Foo::B) => {}
+        Foo::C => {}
+    };
+}
+
+fn main(){}