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 3053d9734532..000000000000 --- 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 f6fe8a4dd59d..000000000000 --- 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 fe771e2e9301..000000000000 --- 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 similarity index 91% rename from src/test/ui/or-patterns/inner-or-pat-2.stderr rename to src/test/ui/or-patterns/inner-or-pat.or3.stderr index 505b6c64a222..2236a38c37b2 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 similarity index 91% rename from src/test/ui/or-patterns/inner-or-pat-4.stderr rename to src/test/ui/or-patterns/inner-or-pat.or4.stderr index 177c7f983125..058873ff5ff9 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 c49b04aa65b1..f4cf4b0c1889 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(){}