Skip to content

Commit 467e200

Browse files
lcnrBoxyUwU
authored andcommitted
add tests
1 parent c1cfab2 commit 467e200

4 files changed

+352
-36
lines changed

tests/ui/const-generics/early/const_arg_trivial_macro_expansion.rs renamed to tests/ui/const-generics/early/const_arg_trivial_macro_expansion-1.rs

+251-36
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ macro_rules! braced_braced_expr {
8585
() => {{ braced_expr!() }};
8686
}
8787

88+
macro_rules! closure {
89+
() => { |()| () };
90+
}
91+
92+
macro_rules! empty {
93+
() => {};
94+
}
95+
8896
#[rustfmt::skip]
8997
mod array_paren_call {
9098
// Arrays where the expanded result is a `Res::Err`
@@ -128,6 +136,14 @@ mod array_paren_call {
128136
fn array_33() -> [(); braced_expr!()] { loop {} }
129137
fn array_34() -> [(); { unbraced_expr!() }] { loop {} }
130138
fn array_35() -> [(); { braced_expr!() }] { loop {} }
139+
140+
// Arrays whose expanded form contains a nested definition
141+
fn array_36() -> [(); closure!()] { loop {} }
142+
fn array_37() -> [(); { closure!() }] { loop {} }
143+
144+
// Arrays whose macro expansion is empty
145+
fn array_38() -> [(); empty!()] { loop {} }
146+
fn array_39() -> [(); { empty!() }] { loop {} }
131147
}
132148

133149
#[rustfmt::skip]
@@ -173,6 +189,14 @@ mod array_brace_call {
173189
fn array_33() -> [(); braced_expr!{}] { loop {} }
174190
fn array_34() -> [(); { unbraced_expr!{} }] { loop {} }
175191
fn array_35() -> [(); { braced_expr!{} }] { loop {} }
192+
193+
// Arrays whose expanded form contains a nested definition
194+
fn array_36() -> [(); closure!{}] { loop {} }
195+
fn array_37() -> [(); { closure!{} }] { loop {} }
196+
197+
// Arrays whose macro expansion is empty
198+
fn array_38() -> [(); empty!{}] { loop {} }
199+
fn array_39() -> [(); { empty!{} }] { loop {} }
176200
}
177201

178202
#[rustfmt::skip]
@@ -218,6 +242,14 @@ mod array_square_call {
218242
fn array_33() -> [(); braced_expr![]] { loop {} }
219243
fn array_34() -> [(); { unbraced_expr![] }] { loop {} }
220244
fn array_35() -> [(); { braced_expr![] }] { loop {} }
245+
246+
// Arrays whose expanded form contains a nested definition
247+
fn array_36() -> [(); closure![]] { loop {} }
248+
fn array_37() -> [(); { closure![] }] { loop {} }
249+
250+
// Arrays whose macro expansion is empty
251+
fn array_38() -> [(); empty![]] { loop {} }
252+
fn array_39() -> [(); { empty![] }] { loop {} }
221253
}
222254

223255
struct Foo<const N: usize>;
@@ -255,18 +287,26 @@ mod adt_paren_call {
255287
fn adt_23<const ident: usize>() -> Foo<{ braced_ident!() }> { loop {} }
256288

257289
// An ADT where the expanded result is a complex expr
258-
fn array_24() -> Foo<unbraced_unbraced_expr!()> { loop {} }
259-
fn array_25() -> Foo<braced_unbraced_expr!()> { loop {} }
260-
fn array_26() -> Foo<unbraced_braced_expr!()> { loop {} }
261-
fn array_27() -> Foo<braced_braced_expr!()> { loop {} }
262-
fn array_28() -> Foo<{ unbraced_unbraced_expr!() }> { loop {} }
263-
fn array_29() -> Foo<{ braced_unbraced_expr!() }> { loop {} }
264-
fn array_30() -> Foo<{ unbraced_braced_expr!() }> { loop {} }
265-
fn array_31() -> Foo<{ braced_braced_expr!() }> { loop {} }
266-
fn array_32() -> Foo<unbraced_expr!()> { loop {} }
267-
fn array_33() -> Foo<braced_expr!()> { loop {} }
268-
fn array_34() -> Foo<{ unbraced_expr!() }> { loop {} }
269-
fn array_35() -> Foo<{ braced_expr!() }> { loop {} }
290+
fn adt_24() -> Foo<unbraced_unbraced_expr!()> { loop {} }
291+
fn adt_25() -> Foo<braced_unbraced_expr!()> { loop {} }
292+
fn adt_26() -> Foo<unbraced_braced_expr!()> { loop {} }
293+
fn adt_27() -> Foo<braced_braced_expr!()> { loop {} }
294+
fn adt_28() -> Foo<{ unbraced_unbraced_expr!() }> { loop {} }
295+
fn adt_29() -> Foo<{ braced_unbraced_expr!() }> { loop {} }
296+
fn adt_30() -> Foo<{ unbraced_braced_expr!() }> { loop {} }
297+
fn adt_31() -> Foo<{ braced_braced_expr!() }> { loop {} }
298+
fn adt_32() -> Foo<unbraced_expr!()> { loop {} }
299+
fn adt_33() -> Foo<braced_expr!()> { loop {} }
300+
fn adt_34() -> Foo<{ unbraced_expr!() }> { loop {} }
301+
fn adt_35() -> Foo<{ braced_expr!() }> { loop {} }
302+
303+
// An ADT whose expanded form contains a nested definition
304+
fn adt_36() -> Foo<closure!()> { loop {} }
305+
fn adt_37() -> Foo<{ closure!() }> { loop {} }
306+
307+
// An ADT whose macro expansion is empty
308+
fn adt_38() -> Foo<empty!()> { loop {} }
309+
fn adt_39() -> Foo<{ empty!() }> { loop {} }
270310
}
271311

272312
#[rustfmt::skip]
@@ -302,18 +342,26 @@ mod adt_brace_call {
302342
fn adt_23<const ident: usize>() -> Foo<{ braced_ident!{} }> { loop {} }
303343

304344
// An ADT where the expanded result is a complex expr
305-
fn array_24() -> Foo<unbraced_unbraced_expr!{}> { loop {} }
306-
fn array_25() -> Foo<braced_unbraced_expr!{}> { loop {} }
307-
fn array_26() -> Foo<unbraced_braced_expr!{}> { loop {} }
308-
fn array_27() -> Foo<braced_braced_expr!{}> { loop {} }
309-
fn array_28() -> Foo<{ unbraced_unbraced_expr!{} }> { loop {} }
310-
fn array_29() -> Foo<{ braced_unbraced_expr!{} }> { loop {} }
311-
fn array_30() -> Foo<{ unbraced_braced_expr!{} }> { loop {} }
312-
fn array_31() -> Foo<{ braced_braced_expr!{} }> { loop {} }
313-
fn array_32() -> Foo<unbraced_expr!{}> { loop {} }
314-
fn array_33() -> Foo<braced_expr!{}> { loop {} }
315-
fn array_34() -> Foo<{ unbraced_expr!{} }> { loop {} }
316-
fn array_35() -> Foo<{ braced_expr!{} }> { loop {} }
345+
fn adt_24() -> Foo<unbraced_unbraced_expr!{}> { loop {} }
346+
fn adt_25() -> Foo<braced_unbraced_expr!{}> { loop {} }
347+
fn adt_26() -> Foo<unbraced_braced_expr!{}> { loop {} }
348+
fn adt_27() -> Foo<braced_braced_expr!{}> { loop {} }
349+
fn adt_28() -> Foo<{ unbraced_unbraced_expr!{} }> { loop {} }
350+
fn adt_29() -> Foo<{ braced_unbraced_expr!{} }> { loop {} }
351+
fn adt_30() -> Foo<{ unbraced_braced_expr!{} }> { loop {} }
352+
fn adt_31() -> Foo<{ braced_braced_expr!{} }> { loop {} }
353+
fn adt_32() -> Foo<unbraced_expr!{}> { loop {} }
354+
fn adt_33() -> Foo<braced_expr!{}> { loop {} }
355+
fn adt_34() -> Foo<{ unbraced_expr!{} }> { loop {} }
356+
fn adt_35() -> Foo<{ braced_expr!{} }> { loop {} }
357+
358+
// An ADT whose expanded form contains a nested definition
359+
fn adt_36() -> Foo<closure!{}> { loop {} }
360+
fn adt_37() -> Foo<{ closure!{} }> { loop {} }
361+
362+
// An ADT whose macro expansion is empty
363+
fn adt_38() -> Foo<empty!{}> { loop {} }
364+
fn adt_39() -> Foo<{ empty!{} }> { loop {} }
317365
}
318366

319367
#[rustfmt::skip]
@@ -349,18 +397,185 @@ mod adt_square_call {
349397
fn adt_23<const ident: usize>() -> Foo<{ braced_ident![] }> { loop {} }
350398

351399
// An ADT where the expanded result is a complex expr
352-
fn array_24() -> Foo<unbraced_unbraced_expr![]> { loop {} }
353-
fn array_25() -> Foo<braced_unbraced_expr![]> { loop {} }
354-
fn array_26() -> Foo<unbraced_braced_expr![]> { loop {} }
355-
fn array_27() -> Foo<braced_braced_expr![]> { loop {} }
356-
fn array_28() -> Foo<{ unbraced_unbraced_expr![] }> { loop {} }
357-
fn array_29() -> Foo<{ braced_unbraced_expr![] }> { loop {} }
358-
fn array_30() -> Foo<{ unbraced_braced_expr![] }> { loop {} }
359-
fn array_31() -> Foo<{ braced_braced_expr![] }> { loop {} }
360-
fn array_32() -> Foo<unbraced_expr![]> { loop {} }
361-
fn array_33() -> Foo<braced_expr![]> { loop {} }
362-
fn array_34() -> Foo<{ unbraced_expr![] }> { loop {} }
363-
fn array_35() -> Foo<{ braced_expr![] }> { loop {} }
400+
fn adt_24() -> Foo<unbraced_unbraced_expr![]> { loop {} }
401+
fn adt_25() -> Foo<braced_unbraced_expr![]> { loop {} }
402+
fn adt_26() -> Foo<unbraced_braced_expr![]> { loop {} }
403+
fn adt_27() -> Foo<braced_braced_expr![]> { loop {} }
404+
fn adt_28() -> Foo<{ unbraced_unbraced_expr![] }> { loop {} }
405+
fn adt_29() -> Foo<{ braced_unbraced_expr![] }> { loop {} }
406+
fn adt_30() -> Foo<{ unbraced_braced_expr![] }> { loop {} }
407+
fn adt_31() -> Foo<{ braced_braced_expr![] }> { loop {} }
408+
fn adt_32() -> Foo<unbraced_expr![]> { loop {} }
409+
fn adt_33() -> Foo<braced_expr![]> { loop {} }
410+
fn adt_34() -> Foo<{ unbraced_expr![] }> { loop {} }
411+
fn adt_35() -> Foo<{ braced_expr![] }> { loop {} }
412+
413+
// An ADT whose expanded form contains a nested definition
414+
fn adt_36() -> Foo<closure![]> { loop {} }
415+
fn adt_37() -> Foo<{ closure![] }> { loop {} }
416+
417+
// An ADT whose macro expansion is empty
418+
fn adt_38() -> Foo<empty![]> { loop {} }
419+
fn adt_39() -> Foo<{ empty![] }> { loop {} }
420+
}
421+
422+
#[rustfmt::skip]
423+
mod repeat_paren_call {
424+
// A repeat expr where the expanded result is a `Res::Err`
425+
fn repeat_0() { [(); unbraced_unbraced_ident!()]; }
426+
fn repeat_1() { [(); braced_unbraced_ident!()]; }
427+
fn repeat_2() { [(); unbraced_braced_ident!()]; }
428+
fn repeat_3() { [(); braced_braced_ident!()]; }
429+
fn repeat_4() { [(); { unbraced_unbraced_ident!() }]; }
430+
fn repeat_5() { [(); { braced_unbraced_ident!() }]; }
431+
fn repeat_6() { [(); { unbraced_braced_ident!() }]; }
432+
fn repeat_7() { [(); { braced_braced_ident!() }]; }
433+
fn repeat_8() { [(); unbraced_ident!()]; }
434+
fn repeat_9() { [(); braced_ident!()]; }
435+
fn repeat_10() { [(); { unbraced_ident!() }]; }
436+
fn repeat_11() { [(); { braced_ident!() }]; }
437+
438+
// A repeat expr where the expanded result is a `Res::ConstParam`
439+
fn repeat_12<const ident: usize>() { [(); unbraced_unbraced_ident!()]; }
440+
fn repeat_13<const ident: usize>() { [(); braced_unbraced_ident!()]; }
441+
fn repeat_14<const ident: usize>() { [(); unbraced_braced_ident!()]; }
442+
fn repeat_15<const ident: usize>() { [(); braced_braced_ident!()]; }
443+
fn repeat_16<const ident: usize>() { [(); { unbraced_unbraced_ident!() }]; }
444+
fn repeat_17<const ident: usize>() { [(); { braced_unbraced_ident!() }]; }
445+
fn repeat_18<const ident: usize>() { [(); { unbraced_braced_ident!() }]; }
446+
fn repeat_19<const ident: usize>() { [(); { braced_braced_ident!() }]; }
447+
fn repeat_20<const ident: usize>() { [(); unbraced_ident!()]; }
448+
fn repeat_21<const ident: usize>() { [(); braced_ident!()]; }
449+
fn repeat_22<const ident: usize>() { [(); { unbraced_ident!() }]; }
450+
fn repeat_23<const ident: usize>() { [(); { braced_ident!() }]; }
451+
452+
// A repeat expr where the expanded result is a complex expr
453+
fn repeat_24() { [(); unbraced_unbraced_expr!()]; }
454+
fn repeat_25() { [(); braced_unbraced_expr!()]; }
455+
fn repeat_26() { [(); unbraced_braced_expr!()]; }
456+
fn repeat_27() { [(); braced_braced_expr!()]; }
457+
fn repeat_28() { [(); { unbraced_unbraced_expr!() }]; }
458+
fn repeat_29() { [(); { braced_unbraced_expr!() }]; }
459+
fn repeat_30() { [(); { unbraced_braced_expr!() }]; }
460+
fn repeat_31() { [(); { braced_braced_expr!() }]; }
461+
fn repeat_32() { [(); unbraced_expr!()]; }
462+
fn repeat_33() { [(); braced_expr!()]; }
463+
fn repeat_34() { [(); { unbraced_expr!() }]; }
464+
fn repeat_35() { [(); { braced_expr!() }]; }
465+
466+
// A repeat expr whose expanded form contains a nested definition
467+
fn repeat_36() { [(); closure!()] }
468+
fn repeat_37() { [(); { closure!() }] }
469+
470+
// A repeat expr whose macro expansion is empty
471+
fn repeat_38() { [(); empty!()] }
472+
fn repeat_39() { [(); { empty!() }] }
473+
}
474+
475+
#[rustfmt::skip]
476+
mod repeat_brace_call {
477+
// A repeat expr where the expanded result is a `Res::Err`
478+
fn repeat_0() { [(); unbraced_unbraced_ident!{}]; }
479+
fn repeat_1() { [(); braced_unbraced_ident!{}]; }
480+
fn repeat_2() { [(); unbraced_braced_ident!{}]; }
481+
fn repeat_3() { [(); braced_braced_ident!{}]; }
482+
fn repeat_4() { [(); { unbraced_unbraced_ident!{} }]; }
483+
fn repeat_5() { [(); { braced_unbraced_ident!{} }]; }
484+
fn repeat_6() { [(); { unbraced_braced_ident!{} }]; }
485+
fn repeat_7() { [(); { braced_braced_ident!{} }]; }
486+
fn repeat_8() { [(); unbraced_ident!{}]; }
487+
fn repeat_9() { [(); braced_ident!{}]; }
488+
fn repeat_10() { [(); { unbraced_ident!{} }]; }
489+
fn repeat_11() { [(); { braced_ident!{} }]; }
490+
491+
// A repeat expr where the expanded result is a `Res::ConstParam`
492+
fn repeat_12<const ident: usize>() { [(); unbraced_unbraced_ident!{}]; }
493+
fn repeat_13<const ident: usize>() { [(); braced_unbraced_ident!{}]; }
494+
fn repeat_14<const ident: usize>() { [(); unbraced_braced_ident!{}]; }
495+
fn repeat_15<const ident: usize>() { [(); braced_braced_ident!{}]; }
496+
fn repeat_16<const ident: usize>() { [(); { unbraced_unbraced_ident!{} }]; }
497+
fn repeat_17<const ident: usize>() { [(); { braced_unbraced_ident!{} }]; }
498+
fn repeat_18<const ident: usize>() { [(); { unbraced_braced_ident!{} }]; }
499+
fn repeat_19<const ident: usize>() { [(); { braced_braced_ident!{} }]; }
500+
fn repeat_20<const ident: usize>() { [(); unbraced_ident!{}]; }
501+
fn repeat_21<const ident: usize>() { [(); braced_ident!{}]; }
502+
fn repeat_22<const ident: usize>() { [(); { unbraced_ident!{} }]; }
503+
fn repeat_23<const ident: usize>() { [(); { braced_ident!{} }]; }
504+
505+
// A repeat expr where the expanded result is a complex expr
506+
fn repeat_24() { [(); unbraced_unbraced_expr!{}]; }
507+
fn repeat_25() { [(); braced_unbraced_expr!{}]; }
508+
fn repeat_26() { [(); unbraced_braced_expr!{}]; }
509+
fn repeat_27() { [(); braced_braced_expr!{}]; }
510+
fn repeat_28() { [(); { unbraced_unbraced_expr!{} }]; }
511+
fn repeat_29() { [(); { braced_unbraced_expr!{} }]; }
512+
fn repeat_30() { [(); { unbraced_braced_expr!{} }]; }
513+
fn repeat_31() { [(); { braced_braced_expr!{} }]; }
514+
fn repeat_32() { [(); unbraced_expr!{}]; }
515+
fn repeat_33() { [(); braced_expr!{}]; }
516+
fn repeat_34() { [(); { unbraced_expr!{} }]; }
517+
fn repeat_35() { [(); { braced_expr!{} }]; }
518+
519+
// A repeat expr whose expanded form contains a nested definition
520+
fn repeat_36() { [(); closure!{}] }
521+
fn repeat_37() { [(); { closure!{} }] }
522+
523+
// A repeat expr whose macro expansion is empty
524+
fn repeat_38() { [(); empty!{}] }
525+
fn repeat_39() { [(); { empty!{} }] }
526+
}
527+
528+
#[rustfmt::skip]
529+
mod repeat_square_call {
530+
// A repeat expr where the expanded result is a `Res::Err`
531+
fn repeat_0() { [(); unbraced_unbraced_ident![]]; }
532+
fn repeat_1() { [(); braced_unbraced_ident![]]; }
533+
fn repeat_2() { [(); unbraced_braced_ident![]]; }
534+
fn repeat_3() { [(); braced_braced_ident![]]; }
535+
fn repeat_4() { [(); { unbraced_unbraced_ident![] }]; }
536+
fn repeat_5() { [(); { braced_unbraced_ident![] }]; }
537+
fn repeat_6() { [(); { unbraced_braced_ident![] }]; }
538+
fn repeat_7() { [(); { braced_braced_ident![] }]; }
539+
fn repeat_8() { [(); unbraced_ident![]]; }
540+
fn repeat_9() { [(); braced_ident![]]; }
541+
fn repeat_10() { [(); { unbraced_ident![] }]; }
542+
fn repeat_11() { [(); { braced_ident![] }]; }
543+
544+
// A repeat expr where the expanded result is a `Res::ConstParam`
545+
fn repeat_12<const ident: usize>() { [(); unbraced_unbraced_ident![]]; }
546+
fn repeat_13<const ident: usize>() { [(); braced_unbraced_ident![]]; }
547+
fn repeat_14<const ident: usize>() { [(); unbraced_braced_ident![]]; }
548+
fn repeat_15<const ident: usize>() { [(); braced_braced_ident![]]; }
549+
fn repeat_16<const ident: usize>() { [(); { unbraced_unbraced_ident![] }]; }
550+
fn repeat_17<const ident: usize>() { [(); { braced_unbraced_ident![] }]; }
551+
fn repeat_18<const ident: usize>() { [(); { unbraced_braced_ident![] }]; }
552+
fn repeat_19<const ident: usize>() { [(); { braced_braced_ident![] }]; }
553+
fn repeat_20<const ident: usize>() { [(); unbraced_ident![]]; }
554+
fn repeat_21<const ident: usize>() { [(); braced_ident![]]; }
555+
fn repeat_22<const ident: usize>() { [(); { unbraced_ident![] }]; }
556+
fn repeat_23<const ident: usize>() { [(); { braced_ident![] }]; }
557+
558+
// A repeat expr where the expanded result is a complex expr
559+
fn repeat_24() { [(); unbraced_unbraced_expr![]]; }
560+
fn repeat_25() { [(); braced_unbraced_expr![]]; }
561+
fn repeat_26() { [(); unbraced_braced_expr![]]; }
562+
fn repeat_27() { [(); braced_braced_expr![]]; }
563+
fn repeat_28() { [(); { unbraced_unbraced_expr![] }]; }
564+
fn repeat_29() { [(); { braced_unbraced_expr![] }]; }
565+
fn repeat_30() { [(); { unbraced_braced_expr![] }]; }
566+
fn repeat_31() { [(); { braced_braced_expr![] }]; }
567+
fn repeat_32() { [(); unbraced_expr![]]; }
568+
fn repeat_33() { [(); braced_expr![]]; }
569+
fn repeat_34() { [(); { unbraced_expr![] }]; }
570+
fn repeat_35() { [(); { braced_expr![] }]; }
571+
572+
// A repeat expr whose expanded form contains a nested definition
573+
fn repeat_36() { [(); closure![]] }
574+
fn repeat_37() { [(); { closure![] }] }
575+
576+
// A repeat expr whose macro expansion is empty
577+
fn repeat_38() { [(); empty![]] }
578+
fn repeat_39() { [(); { empty![] }] }
364579
}
365580

366581
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Additional checks for macro expansion in const args
2+
3+
//@ check-pass
4+
5+
macro_rules! closure {
6+
() => { |()| () };
7+
}
8+
9+
macro_rules! indir_semi {
10+
($nested:ident) => { $nested!(); };
11+
}
12+
13+
macro_rules! indir {
14+
($nested:ident) => { $nested!() };
15+
}
16+
17+
macro_rules! empty {
18+
() => {};
19+
}
20+
21+
macro_rules! arg {
22+
() => { N };
23+
}
24+
25+
struct Adt<const N: usize>;
26+
27+
fn array1() -> [(); { closure!(); 0 }] { loop {} }
28+
fn array2() -> [(); { indir!(closure); 0}] { loop {} }
29+
fn array3() -> [(); { indir_semi!{ closure } 0 }] { loop {} }
30+
fn array4<const N: usize>() -> [(); { indir!{ empty } arg!{} }] { loop {} }
31+
fn array5<const N: usize>() -> [(); { empty!{} arg!() }] { loop {} }
32+
fn array6<const N: usize>() -> [(); { empty!{} N }] { loop {} }
33+
fn array7<const N: usize>() -> [(); { arg!{} empty!{} }] { loop {} }
34+
fn array8<const N: usize>() -> [(); { empty!{} arg!{} empty!{} }] { loop {} }
35+
36+
fn adt1() -> Adt<{ closure!(); 0 }> { loop {} }
37+
fn adt2() -> Adt<{ indir!(closure); 0}> { loop {} }
38+
fn adt3() -> Adt<{ indir_semi!{ closure } 0 }> { loop {} }
39+
fn adt4<const N: usize>() -> Adt<{ indir!{ empty } arg!{} }> { loop {} }
40+
fn adt5<const N: usize>() -> Adt<{ empty!{} arg!() }> { loop {} }
41+
fn adt6<const N: usize>() -> Adt<{ empty!{} N }> { loop {} }
42+
fn adt7<const N: usize>() -> Adt<{ arg!{} empty!{} }> { loop {} }
43+
fn adt8<const N: usize>() -> Adt<{ empty!{} arg!{} empty!{} }> { loop {} }
44+
45+
46+
fn main() {}

0 commit comments

Comments
 (0)