summaryrefslogtreecommitdiffstats
path: root/tests/ui/rfcs/rfc-0000-never_patterns/parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/rfcs/rfc-0000-never_patterns/parse.rs')
-rw-r--r--tests/ui/rfcs/rfc-0000-never_patterns/parse.rs71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/ui/rfcs/rfc-0000-never_patterns/parse.rs b/tests/ui/rfcs/rfc-0000-never_patterns/parse.rs
new file mode 100644
index 000000000..1b23e60e0
--- /dev/null
+++ b/tests/ui/rfcs/rfc-0000-never_patterns/parse.rs
@@ -0,0 +1,71 @@
+#![feature(never_patterns)]
+#![allow(incomplete_features)]
+
+enum Void {}
+
+fn main() {}
+
+macro_rules! never {
+ () => { ! }
+}
+
+fn parse(x: Void) {
+ match None::<Void> {
+ None => {}
+ Some(!),
+ }
+ match None::<Void> {
+ Some(!),
+ None => {}
+ }
+ match None::<Void> {
+ None => {}
+ Some(!)
+ }
+ match None::<Void> {
+ Some(!)
+ //~^ ERROR expected `,` following `match` arm
+ None => {}
+ }
+ match None::<Void> {
+ Some(!) if true
+ //~^ ERROR expected `,` following `match` arm
+ //~| ERROR guard on a never pattern
+ None => {}
+ }
+ match None::<Void> {
+ Some(!) if true,
+ //~^ ERROR guard on a never pattern
+ None => {}
+ }
+ match None::<Void> {
+ Some(!) <=
+ //~^ ERROR expected one of
+ }
+ match x {
+ never!(),
+ }
+ match x {
+ never!() if true,
+ //~^ ERROR guard on a never pattern
+ }
+ match x {
+ never!()
+ }
+ match &x {
+ &never!(),
+ }
+ match None::<Void> {
+ Some(never!()),
+ None => {}
+ }
+ match x { ! }
+ match &x { &! }
+
+ let res: Result<bool, Void> = Ok(false);
+ let Ok(_) = res;
+ let Ok(_) | Err(!) = &res; // Disallowed; see #82048.
+ //~^ ERROR top-level or-patterns are not allowed in `let` bindings
+ let (Ok(_) | Err(!)) = &res;
+ let (Ok(_) | Err(&!)) = res.as_ref();
+}