2022-08-17 05:21:03 -05:00
|
|
|
//@ revisions: or1 or2 or3 or4 or5
|
|
|
|
//@ [or1] run-pass
|
|
|
|
//@ [or2] run-pass
|
|
|
|
//@ [or5] run-pass
|
2022-06-17 08:34:00 -05:00
|
|
|
|
2022-08-17 05:21:03 -05:00
|
|
|
#![allow(unreachable_patterns)]
|
|
|
|
#![allow(unused_variables)]
|
|
|
|
#![allow(unused_parens)]
|
|
|
|
#![allow(dead_code)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn foo() {
|
2022-06-17 08:34:00 -05:00
|
|
|
let x = "foo";
|
|
|
|
match x {
|
|
|
|
x @ ((("h" | "ho" | "yo" | ("dude" | "w")) | "no" | "nop") | ("hey" | "gg")) |
|
|
|
|
x @ ("black" | "pink") |
|
|
|
|
x @ ("red" | "blue") => {
|
|
|
|
}
|
|
|
|
_ => (),
|
|
|
|
}
|
|
|
|
}
|
2022-08-17 05:21:03 -05:00
|
|
|
|
|
|
|
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(){}
|