// Additional checks for macro expansion in const args //@ check-pass macro_rules! closure { () => { |()| () }; } macro_rules! indir_semi { ($nested:ident) => { $nested!(); }; } macro_rules! indir { ($nested:ident) => { $nested!() }; } macro_rules! empty { () => {}; } macro_rules! arg { () => { N }; } struct Adt; fn array1() -> [(); { closure!(); 0 }] { loop {} } fn array2() -> [(); { indir!(closure); 0}] { loop {} } fn array3() -> [(); { indir_semi!{ closure } 0 }] { loop {} } fn array4() -> [(); { indir!{ empty } arg!{} }] { loop {} } fn array5() -> [(); { empty!{} arg!() }] { loop {} } fn array6() -> [(); { empty!{} N }] { loop {} } fn array7() -> [(); { arg!{} empty!{} }] { loop {} } fn array8() -> [(); { empty!{} arg!{} empty!{} }] { loop {} } fn adt1() -> Adt<{ closure!(); 0 }> { loop {} } fn adt2() -> Adt<{ indir!(closure); 0}> { loop {} } fn adt3() -> Adt<{ indir_semi!{ closure } 0 }> { loop {} } fn adt4() -> Adt<{ indir!{ empty } arg!{} }> { loop {} } fn adt5() -> Adt<{ empty!{} arg!() }> { loop {} } fn adt6() -> Adt<{ empty!{} N }> { loop {} } fn adt7() -> Adt<{ arg!{} empty!{} }> { loop {} } fn adt8() -> Adt<{ empty!{} arg!{} empty!{} }> { loop {} } fn main() {}