diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/or-patterns/inner-or-pat-2.rs | 13 | ||||
| -rw-r--r-- | src/test/ui/or-patterns/inner-or-pat-2.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/or-patterns/inner-or-pat-3.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/or-patterns/inner-or-pat-4.rs | 13 | ||||
| -rw-r--r-- | src/test/ui/or-patterns/inner-or-pat-4.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/or-patterns/inner-or-pat.rs | 14 |
6 files changed, 77 insertions, 0 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 new file mode 100644 index 00000000000..3053d973453 --- /dev/null +++ b/src/test/ui/or-patterns/inner-or-pat-2.rs @@ -0,0 +1,13 @@ +#[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-2.stderr b/src/test/ui/or-patterns/inner-or-pat-2.stderr new file mode 100644 index 00000000000..505b6c64a22 --- /dev/null +++ b/src/test/ui/or-patterns/inner-or-pat-2.stderr @@ -0,0 +1,11 @@ +error[E0308]: mismatched types + --> $DIR/inner-or-pat-2.rs:6:54 + | +LL | match x { + | - this expression has type `&str` +LL | x @ ((("h" | "ho" | "yo" | ("dude" | "w")) | () | "nop") | ("hey" | "gg")) | + | ^^ expected `str`, found `()` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/or-patterns/inner-or-pat-3.rs b/src/test/ui/or-patterns/inner-or-pat-3.rs new file mode 100644 index 00000000000..f6fe8a4dd59 --- /dev/null +++ b/src/test/ui/or-patterns/inner-or-pat-3.rs @@ -0,0 +1,15 @@ +// 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 new file mode 100644 index 00000000000..fe771e2e930 --- /dev/null +++ b/src/test/ui/or-patterns/inner-or-pat-4.rs @@ -0,0 +1,13 @@ +#[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-4.stderr b/src/test/ui/or-patterns/inner-or-pat-4.stderr new file mode 100644 index 00000000000..177c7f98312 --- /dev/null +++ b/src/test/ui/or-patterns/inner-or-pat-4.stderr @@ -0,0 +1,11 @@ +error[E0408]: variable `x` is not bound in all patterns + --> $DIR/inner-or-pat-4.rs:8:37 + | +LL | (x @ "red" | (x @ "blue" | "red")) => { + | - ^^^^^ pattern doesn't bind `x` + | | + | variable not in all patterns + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0408`. diff --git a/src/test/ui/or-patterns/inner-or-pat.rs b/src/test/ui/or-patterns/inner-or-pat.rs new file mode 100644 index 00000000000..c49b04aa65b --- /dev/null +++ b/src/test/ui/or-patterns/inner-or-pat.rs @@ -0,0 +1,14 @@ +// run-pass + +#[allow(unused_variables)] +#[allow(unused_parens)] +fn main() { + let x = "foo"; + match x { + x @ ((("h" | "ho" | "yo" | ("dude" | "w")) | "no" | "nop") | ("hey" | "gg")) | + x @ ("black" | "pink") | + x @ ("red" | "blue") => { + } + _ => (), + } +} |
