| // check-pass | |
| #![deny(unreachable_patterns)] | |
| pub enum TypeCtor { | |
| Slice, | |
| Array, | |
| } | |
| pub struct ApplicationTy(TypeCtor); | |
| macro_rules! ty_app { | |
| ($ctor:pat) => { | |
| ApplicationTy($ctor) | |
| }; | |
| } | |
| fn _foo(ty: ApplicationTy) { | |
| match ty { | |
| ty_app!(TypeCtor::Array) | ty_app!(TypeCtor::Slice) => {} | |
| } | |
| // same as above, with the macro expanded | |
| match ty { | |
| ApplicationTy(TypeCtor::Array) | ApplicationTy(TypeCtor::Slice) => {} | |
| } | |
| } | |
| fn main() {} |