| |
| 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; |
| } |