]> git.lizzy.rs Git - rust.git/blob - src/test/ui/pattern/patkind-litrange-no-expr.rs
Rollup merge of #56677 - aelred:must-use-on-traits, r=estebank
[rust.git] / src / test / ui / pattern / patkind-litrange-no-expr.rs
1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 macro_rules! enum_number {
12     ($name:ident { $($variant:ident = $value:expr, )* }) => {
13         enum $name {
14             $($variant = $value,)*
15         }
16
17         fn foo(value: i32) -> Option<$name> {
18             match value {
19                 $( $value => Some($name::$variant), )* // PatKind::Lit
20                 $( $value ..= 42 => Some($name::$variant), )* // PatKind::Range
21                 _ => None
22             }
23         }
24     }
25 }
26
27 enum_number!(Change {
28     Pos = 1,
29     Neg = -1,
30     Arith = 1 + 1, //~ ERROR arbitrary expressions aren't allowed in patterns
31                    //~^ ERROR only char and numeric types are allowed in range patterns
32 });
33
34 fn main() {}