6 macro_rules! foo { () => {
16 macro_rules! m { ($m1:ident, $m2:ident, $x:ident) => {
17 macro_rules! $m1 { () => { ($x, x) } }
19 macro_rules! $m2 { () => { ($x, x) } }
26 assert_eq!(m2!(), (2, 0));
27 assert_eq!(m3!(), (2, 1));
31 assert_eq!(m4!(), (4, 0));
32 assert_eq!(m5!(), (4, 1));
37 ($f:ident : |$x:ident| $e:expr) => {
38 pub fn $f() -> (i32, i32) {
49 fn interpolated_pattern() {
52 ($p:pat, $e:expr) => {
54 assert_eq!((x, $e), (0, 1));
61 fn patterns_in_macro_generated_macros() {
64 ($a:expr, $b:expr) => {
79 assert_eq!(n!(), (2, 1));
86 ($p:pat, $e:expr) => {
87 for result in &[Ok(1), Err(1)] {
89 $p => { assert_eq!(($e, x), (1, 0)); }
90 Err(x) => { assert_eq!(($e, x), (2, 1)); }
102 macro_rules! m { () => { break 'a; } }
110 assert_eq!(foo::f(), (0, 11));
111 interpolated_pattern();
112 patterns_in_macro_generated_macros();