| //! Regression test for https://github.com/rust-lang/rust/issues/3121 |
| |
| //@ run-pass |
| #![allow(dead_code)] |
| #![allow(non_camel_case_types)] |
| |
| #[derive(Copy, Clone)] |
| enum side { |
| mayo, |
| catsup, |
| vinegar, |
| } |
| #[derive(Copy, Clone)] |
| enum order { |
| hamburger, |
| fries(side), |
| shake, |
| } |
| #[derive(Copy, Clone)] |
| enum meal { |
| to_go(order), |
| for_here(order), |
| } |
| |
| fn foo(m: Box<meal>, cond: bool) { |
| match *m { |
| meal::to_go(_) => {} |
| meal::for_here(_) if cond => {} |
| meal::for_here(order::hamburger) => {} |
| meal::for_here(order::fries(_s)) => {} |
| meal::for_here(order::shake) => {} |
| } |
| } |
| |
| pub fn main() { |
| foo(Box::new(meal::for_here(order::hamburger)), true) |
| } |