// run-pass macro_rules! fooN { ($cur:ident $prev:ty) => { #[allow(dead_code)] enum $cur { Empty, First($prev), Second($prev), Third($prev), Fourth($prev), } } } fooN!(Foo0 ()); fooN!(Foo1 Foo0); fooN!(Foo2 Foo1); fooN!(Foo3 Foo2); fooN!(Foo4 Foo3); fooN!(Foo5 Foo4); fooN!(Foo6 Foo5); fooN!(Foo7 Foo6); fooN!(Foo8 Foo7); fooN!(Foo9 Foo8); fooN!(Foo10 Foo9); fooN!(Foo11 Foo10); fooN!(Foo12 Foo11); fooN!(Foo13 Foo12); fooN!(Foo14 Foo13); fooN!(Foo15 Foo14); fooN!(Foo16 Foo15); fooN!(Foo17 Foo16); fooN!(Foo18 Foo17); fooN!(Foo19 Foo18); fooN!(Foo20 Foo19); fooN!(Foo21 Foo20); fooN!(Foo22 Foo21); fooN!(Foo23 Foo22); fooN!(Foo24 Foo23); fooN!(Foo25 Foo24); fooN!(Foo26 Foo25); fooN!(Foo27 Foo26); fn main() { let _foo = Foo27::Empty; }