//@ 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() {}