| macro_rules! enum_number { | |
| ($name:ident { $($variant:ident = $value:expr, )* }) => { | |
| enum $name { | |
| $($variant = $value,)* | |
| } | |
| fn foo(value: i32) -> Option<$name> { | |
| match value { | |
| $( $value => Some($name::$variant), )* // PatKind::Expr | |
| $( $value ..= 42 => Some($name::$variant), )* // PatKind::Range | |
| _ => None | |
| } | |
| } | |
| } | |
| } | |
| enum_number!(Change { | |
| Pos = 1, | |
| Neg = -1, | |
| Arith = 1 + 1, //~ ERROR arbitrary expressions aren't allowed in patterns | |
| //~| ERROR arbitrary expressions aren't allowed in patterns | |
| }); | |
| fn main() {} |