| //@ run-pass | |
| // Test that failing macro matchers will not cause pre-expansion errors | |
| // even though they use a feature that is pre-expansion gated. | |
| #[allow(unused_macro_rules)] | |
| macro_rules! m { | |
| ($e:expr) => { | |
| 0 | |
| }; // This fails on the input below due to `, foo`. | |
| ($e:expr,) => { | |
| 1 | |
| }; // This also fails to match due to `foo`. | |
| (do yeet $e:expr, foo) => { | |
| 2 | |
| }; // Successful matcher, we should get `2`. | |
| } | |
| fn main() { | |
| assert_eq!(2, m!(do yeet 42, foo)); | |
| } |