1 2 extern(C) int printf(const char*, ...); 3 4 /*********************************************************/ 5 6 int sum(int[] xx ...) 7 { main()8 int s; 9 10 foreach (int x; xx) 11 s += x; 12 return s; 13 } 14 15 void test1() 16 { 17 static int[3] a = [5, 8, 10]; 18 int[] b = a; 19 int i; 20 21 i = sum(); 22 assert(i == 0); 23 i = sum(10); 24 assert(i == 10); 25 i = sum(10, 20); 26 assert(i == 30); 27 i = sum(11, 22, 34); 28 assert(i == 67); 29 i = sum(a); 30 assert(i == 23); 31 i = sum(b); 32 assert(i == 23); 33 printf("%d\n", sum()); 34 } 35 36 /*********************************************************/ 37 38 int sum2(int[3] xx ...) 39 { 40 int s; 41 42 foreach (int x; xx) 43 s += x; 44 return s; 45 } 46 47 void test2() 48 { 49 static int[3] a = [5, 8, 10]; 50 int i; 51 52 i = sum2(11, 22, 34); 53 assert(i == 67); 54 i = sum2(a); 55 assert(i == 23); 56 printf("%d\n", i); 57 } 58 59 /*********************************************************/ 60 61 int[4] bb3 = [5,6,7,8]; 62 63 int sum3(int[] xx = bb3 ...) 64 { 65 int s; 66 67 foreach (int x; xx) 68 s += x; 69 return s; 70 } 71 72 void test3() 73 { 74 static int[3] a = [5, 8, 10]; 75 int i; 76 77 i = sum3(11, 22, 34); 78 assert(i == 67); 79 i = sum3(a); 80 assert(i == 23); 81 i = sum3(); 82 assert(i == 26); 83 printf("%d\n", i); 84 } 85 86 /*********************************************************/ 87 88 class Foo4 89 { 90 int a; 91 float f; 92 double d; 93 94 this(int a, float f, double d) 95 { 96 this.a = a; 97 this.f = f; 98 this.d = d; 99 } 100 } 101 102 int sum4(Foo4 f ...) 103 { 104 return cast(int)(f.a + f.f + f.d); 105 } 106 107 void test4() 108 { 109 int i; 110 Foo4 foo = new Foo4(1, 2f, 3.0); 111 112 i = sum4(foo); 113 assert(i == 1+2+3); 114 i = sum4(4, 5f, 6.0); 115 assert(i == 4+5+6); 116 117 printf("%d\n", i); 118 } 119 120 /*********************************************************/ 121 122 123 void bug1993(int[][] y...) 124 { 125 } 126 void test5() 127 { 128 bug1993(null); 129 bug1993(null, null); 130 bug1993([0], null); 131 bug1993([0], [0]); 132 bug1993(null, [0]); 133 } 134 135 /*********************************************************/ 136 137 int main() 138 { 139 test1(); 140 test2(); 141 test3(); 142 test4(); 143 test5(); 144 145 printf("Success\n"); 146 return 0; 147 } 148