1 macro_rules! enum_number {
2     ($name:ident { $($variant:ident = $value:expr, )* }) => {
3         enum $name {
4             $($variant = $value,)*
5         }
6 
7         fn foo(value: i32) -> Option<$name> {
8             match value {
9                 $( $value => Some($name::$variant), )* // PatKind::Lit
10                 $( $value ..= 42 => Some($name::$variant), )* // PatKind::Range
11                 _ => None
12             }
13         }
14     }
15 }
16 
17 enum_number!(Change {
18     Pos = 1,
19     Neg = -1,
20     Arith = 1 + 1, //~ ERROR arbitrary expressions aren't allowed in patterns
21                    //~| ERROR arbitrary expressions aren't allowed in patterns
22 });
23 
main()24 fn main() {}
25