]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gdc.dg/torture/pr94777b.d
d: Import dmd b8384668f, druntime e6caaab9, phobos 5ab9ad256 (v2.098.0-beta.1)
[thirdparty/gcc.git] / gcc / testsuite / gdc.dg / torture / pr94777b.d
CommitLineData
2370bdbb
IB
1// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94777
2// { dg-additional-options "-fmain -funittest" }
72ddef62 3// { dg-do run }
2370bdbb
IB
4// { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
5
6void testVariadic(T)(int nargs, ...)
7{
8 import core.stdc.stdarg;
9 foreach(i; 0 .. nargs)
10 {
11 auto arg = va_arg!T(_argptr);
12 static if (__traits(compiles, arg.value))
13 {
14 assert(arg.value == i);
15 }
16 else static if (__traits(compiles, arg[0]))
17 {
18 foreach (value; arg)
19 assert(value == i);
20 }
21 else
22 {
23 assert(arg == T.init);
24 }
25 }
26}
27
28/******************************************/
29
2370bdbb
IB
30struct Destructor
31{
32 static int count = 0;
33 int value;
34 ~this() { count++; }
35}
36
37unittest
38{
39 {
40 auto a0 = Destructor(0);
41 auto a1 = Destructor(1);
42 auto a2 = Destructor(2);
43 static assert(!__traits(compiles, testVariadic!Destructor(3, a0, a1, a2)));
44 }
45 assert(Destructor.count == 3);
46}