| // PERMUTE_ARGS: |
| |
| /******************************************/ |
| |
| static int bigarray[100][100]; |
| |
| void test1() |
| { |
| for (int i = 0; i < 100; i += 1) |
| { |
| for (int j = 0; j < 100; j += 1) |
| { |
| //printf("Array %i %i\n", i, j); |
| bigarray[i][j] = 0; |
| } |
| } |
| } |
| |
| /******************************************/ |
| // 10629 |
| |
| class Foo10629 {} |
| |
| struct Bar10629 |
| { |
| void[__traits(classInstanceSize, Foo10629)] x; |
| } |
| |
| /******************************************/ |
| // 11233 |
| |
| struct S11233 |
| { |
| uint[0x100000] arr; |
| } |
| |
| /******************************************/ |
| // 11672 |
| |
| void test11672() |
| { |
| struct V { float f; } |
| struct S |
| { |
| V[3] v = V(1); |
| } |
| |
| S s; |
| assert(s.v == [V(1), V(1), V(1)]); /* was [V(1), V(nan), V(nan)] */ |
| } |
| |
| /******************************************/ |
| // 12509 |
| |
| struct A12509 |
| { |
| int member; |
| } |
| struct B12509 |
| { |
| A12509[0x10000] array; |
| } |
| |
| /******************************************/ |
| // 13505 |
| |
| class C13505 { void[10] x; } |
| struct S13505 { void[10] x; } |
| |
| void test13505() |
| { |
| auto c = new C13505(); |
| auto s = S13505(); |
| } |
| |
| /******************************************/ |
| // 14699 |
| |
| struct S14699a { ubyte[0][10] values; } |
| struct S14699b { S14699a tbl; } |
| // +/ |
| |
| ubyte[0][1] sa14699; |
| |
| void test14699() |
| { |
| //auto p = &sa14699; // Cannot work in Win32 (OMF) |
| } |
| |
| /******************************************/ |
| // 14805 |
| |
| struct S14805 |
| { |
| ushort one; |
| } |
| auto a14805 = new S14805[513*513]; |
| |
| /******************************************/ |
| // 15664 |
| |
| struct Data15664A |
| { |
| int[2] a; |
| int[2][2] b; |
| int c; |
| } |
| |
| Data15664A d15664a1 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK |
| const Data15664A d15664a2 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK <- NG |
| shared Data15664A d15664a3 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK <- NG |
| shared const Data15664A d15664a4 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK <- NG |
| immutable Data15664A d15664a5 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK <- NG |
| |
| struct Data15664B |
| { |
| int[2] a; |
| const int[2][2] b; |
| int c; |
| } |
| |
| Data15664B d15664b1 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK |
| const Data15664B d15664b2 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK |
| shared Data15664B d15664b3 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK <- NG |
| shared const Data15664B d15664b4 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK <- NG |
| immutable Data15664B d15664b5 = {[1, 2], [[3, 4], [5, 6]], 7}; // OK <- NG |
| |
| void test15664() |
| { |
| assert(d15664a1.a == [1, 2]); |
| assert(d15664a2.a == [1, 2]); |
| assert(d15664a3.a == cast(shared)[1, 2]); |
| assert(d15664a4.a == cast(shared)[1, 2]); |
| assert(d15664a5.a == [1, 2]); |
| assert(d15664a1.b == [[3, 4], [5, 6]]); |
| assert(d15664a2.b == [[3, 4], [5, 6]]); |
| assert(d15664a3.b == cast(shared)[[3, 4], [5, 6]]); |
| assert(d15664a4.b == cast(shared)[[3, 4], [5, 6]]); |
| assert(d15664a5.b == [[3, 4], [5, 6]]); |
| assert(d15664a1.c == 7); // OK |
| assert(d15664a2.c == 7); // OK <- BG |
| assert(d15664a3.c == 7); // OK <- NG |
| assert(d15664a4.c == 7); // OK <- NG |
| assert(d15664a5.c == 7); // OK <- NG |
| |
| assert(d15664b1.a == [1, 2]); |
| assert(d15664b2.a == [1, 2]); |
| assert(d15664b3.a == cast(shared)[1, 2]); |
| assert(d15664b4.a == cast(shared)[1, 2]); |
| assert(d15664b5.a == [1, 2]); |
| assert(d15664b1.b == [[3, 4], [5, 6]]); |
| assert(d15664b2.b == [[3, 4], [5, 6]]); |
| assert(d15664b3.b == cast(shared)[[3, 4], [5, 6]]); |
| assert(d15664b4.b == cast(shared)[[3, 4], [5, 6]]); |
| assert(d15664b5.b == [[3, 4], [5, 6]]); |
| assert(d15664b1.c == 7); // OK |
| assert(d15664b2.c == 7); // OK |
| assert(d15664b3.c == 7); // OK <- NG |
| assert(d15664b4.c == 7); // OK <- NG |
| assert(d15664b5.c == 7); // OK <- NG |
| } |
| |
| /******************************************/ |
| |
| int main() |
| { |
| test1(); |
| test11672(); |
| test15664(); |
| |
| return 0; |
| } |