173 lines
3.8 KiB
D
173 lines
3.8 KiB
D
// 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;
|
|
}
|