1 // PERMUTE_ARGS:
2 
3 /******************************************/
4 
5 static int bigarray[100][100];
6 
test1()7 void test1()
8 {
9   for (int i = 0; i < 100; i += 1)
10   {
11     for (int j = 0; j < 100; j += 1)
12     {
13       //printf("Array %i %i\n", i, j);
14       bigarray[i][j] = 0;
15     }
16   }
17 }
18 
19 /******************************************/
20 // 10629
21 
22 class Foo10629 {}
23 
24 struct Bar10629
25 {
26     void[__traits(classInstanceSize, Foo10629)] x;
27 }
28 
29 /******************************************/
30 // 11233
31 
32 struct S11233
33 {
34     uint[0x100000] arr;
35 }
36 
37 /******************************************/
38 // 11672
39 
test11672()40 void test11672()
41 {
42     struct V { float f; }
43     struct S
44     {
45         V[3] v = V(1);
46     }
47 
48     S s;
49     assert(s.v == [V(1), V(1), V(1)]); /* was [V(1), V(nan), V(nan)] */
50 }
51 
52 /******************************************/
53 // 12509
54 
55 struct A12509
56 {
57     int member;
58 }
59 struct B12509
60 {
61     A12509[0x10000] array;
62 }
63 
64 /******************************************/
65 // 13505
66 
67 class C13505 { void[10] x; }
68 struct S13505 { void[10] x; }
69 
test13505()70 void test13505()
71 {
72     auto c = new C13505();
73     auto s = S13505();
74 }
75 
76 /******************************************/
77 // 14699
78 
79 struct S14699a { ubyte[0][10] values; }
80 struct S14699b { S14699a tbl; }
81 // +/
82 
83 ubyte[0][1] sa14699;
84 
test14699()85 void test14699()
86 {
87     //auto p = &sa14699;  // Cannot work in Win32 (OMF)
88 }
89 
90 /******************************************/
91 // 14805
92 
93 struct S14805
94 {
95     ushort one;
96 }
97 auto a14805 = new S14805[513*513];
98 
99 /******************************************/
100 // 15664
101 
102 struct Data15664A
103 {
104     int[2] a;
105     int[2][2] b;
106     int c;
107 }
108 
109              Data15664A d15664a1 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK
110        const Data15664A d15664a2 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK <- NG
111 shared       Data15664A d15664a3 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK <- NG
112 shared const Data15664A d15664a4 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK <- NG
113    immutable Data15664A d15664a5 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK <- NG
114 
115 struct Data15664B
116 {
117     int[2] a;
118     const int[2][2] b;
119     int c;
120 }
121 
122              Data15664B d15664b1 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK
123        const Data15664B d15664b2 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK
124 shared       Data15664B d15664b3 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK <- NG
125 shared const Data15664B d15664b4 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK <- NG
126    immutable Data15664B d15664b5 = {[1, 2], [[3, 4], [5, 6]], 7};   // OK <- NG
127 
test15664()128 void test15664()
129 {
130     assert(d15664a1.a == [1, 2]);
131     assert(d15664a2.a == [1, 2]);
132     assert(d15664a3.a == cast(shared)[1, 2]);
133     assert(d15664a4.a == cast(shared)[1, 2]);
134     assert(d15664a5.a == [1, 2]);
135     assert(d15664a1.b == [[3, 4], [5, 6]]);
136     assert(d15664a2.b == [[3, 4], [5, 6]]);
137     assert(d15664a3.b == cast(shared)[[3, 4], [5, 6]]);
138     assert(d15664a4.b == cast(shared)[[3, 4], [5, 6]]);
139     assert(d15664a5.b == [[3, 4], [5, 6]]);
140     assert(d15664a1.c == 7);    // OK
141     assert(d15664a2.c == 7);    // OK <- BG
142     assert(d15664a3.c == 7);    // OK <- NG
143     assert(d15664a4.c == 7);    // OK <- NG
144     assert(d15664a5.c == 7);    // OK <- NG
145 
146     assert(d15664b1.a == [1, 2]);
147     assert(d15664b2.a == [1, 2]);
148     assert(d15664b3.a == cast(shared)[1, 2]);
149     assert(d15664b4.a == cast(shared)[1, 2]);
150     assert(d15664b5.a == [1, 2]);
151     assert(d15664b1.b == [[3, 4], [5, 6]]);
152     assert(d15664b2.b == [[3, 4], [5, 6]]);
153     assert(d15664b3.b == cast(shared)[[3, 4], [5, 6]]);
154     assert(d15664b4.b == cast(shared)[[3, 4], [5, 6]]);
155     assert(d15664b5.b == [[3, 4], [5, 6]]);
156     assert(d15664b1.c == 7);    // OK
157     assert(d15664b2.c == 7);    // OK
158     assert(d15664b3.c == 7);    // OK <- NG
159     assert(d15664b4.c == 7);    // OK <- NG
160     assert(d15664b5.c == 7);    // OK <- NG
161 }
162 
163 /******************************************/
164 
main()165 int main()
166 {
167     test1();
168     test11672();
169     test15664();
170 
171     return 0;
172 }
173