| //@ revisions: rpass1 rpass2 | |
| // issue#112680 | |
| #![feature(decl_macro)] | |
| pub trait T { | |
| type Key; | |
| fn index_from_key(key: Self::Key) -> usize; | |
| } | |
| pub macro m($key_ty:ident, $val_ty:ident) { | |
| struct $key_ty { | |
| inner: usize, | |
| } | |
| impl T for $val_ty { | |
| type Key = $key_ty; | |
| fn index_from_key(key: Self::Key) -> usize { | |
| key.inner | |
| } | |
| } | |
| } | |
| m!(TestId, Test); | |
| #[cfg(rpass1)] | |
| struct Test(u32); | |
| #[cfg(rpass2)] | |
| struct Test; | |
| fn main() {} |