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