blob: d146fd49dbf47197ef9eae68883e22059978b4c8 [file] [log] [blame]
extern(C) int printf(const char*, ...);
/*********************************************************/
int sum(int[] xx ...)
{
int s;
foreach (int x; xx)
s += x;
return s;
}
void test1()
{
static int[3] a = [5, 8, 10];
int[] b = a;
int i;
i = sum();
assert(i == 0);
i = sum(10);
assert(i == 10);
i = sum(10, 20);
assert(i == 30);
i = sum(11, 22, 34);
assert(i == 67);
i = sum(a);
assert(i == 23);
i = sum(b);
assert(i == 23);
printf("%d\n", sum());
}
/*********************************************************/
int sum2(int[3] xx ...)
{
int s;
foreach (int x; xx)
s += x;
return s;
}
void test2()
{
static int[3] a = [5, 8, 10];
int i;
i = sum2(11, 22, 34);
assert(i == 67);
i = sum2(a);
assert(i == 23);
printf("%d\n", i);
}
/*********************************************************/
int[4] bb3 = [5,6,7,8];
int sum3(int[] xx = bb3 ...)
{
int s;
foreach (int x; xx)
s += x;
return s;
}
void test3()
{
static int[3] a = [5, 8, 10];
int i;
i = sum3(11, 22, 34);
assert(i == 67);
i = sum3(a);
assert(i == 23);
i = sum3();
assert(i == 26);
printf("%d\n", i);
}
/*********************************************************/
class Foo4
{
int a;
float f;
double d;
this(int a, float f, double d)
{
this.a = a;
this.f = f;
this.d = d;
}
}
int sum4(Foo4 f ...)
{
return cast(int)(f.a + f.f + f.d);
}
void test4()
{
int i;
Foo4 foo = new Foo4(1, 2f, 3.0);
i = sum4(foo);
assert(i == 1+2+3);
i = sum4(4, 5f, 6.0);
assert(i == 4+5+6);
printf("%d\n", i);
}
/*********************************************************/
void bug1993(int[][] y...)
{
}
void test5()
{
bug1993(null);
bug1993(null, null);
bug1993([0], null);
bug1993([0], [0]);
bug1993(null, [0]);
}
/*********************************************************/
int main()
{
test1();
test2();
test3();
test4();
test5();
printf("Success\n");
return 0;
}