blob: 92a18756a0e33b7d6394a5fb1bf8d7a73f15f788 [file] [log] [blame]
// { dg-options "-I $srcdir/gdc.dg -I $srcdir/gdc.dg/imports -Wno-psabi" }
// { dg-additional-sources "imports/gdc27.d imports/gdc231.d" }
// { dg-do compile }
import core.simd;
import gcc.attribute;
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=27
import imports.gdc27;
interface I_B : I_A
{
void b();
}
abstract class C_B : C_A, I_B
{
abstract void b();
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=108
@attribute("forceinline")
void forceinline108()
{
}
@attribute("noinline")
void noinline108()
{
}
@attribute("flatten")
void flatten108()
{
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=170
import imports.gdc170;
void test170()
{
foo!void.foo1!void();
foo!void.foo2!void();
foo!void.foo3();
foo!void.foo3!void();
foo!void.foo4();
foo!void.foo4!void();
foo!void.foo5!void(null);
foo!void.foo6!void(null);
foo!void.foo7(null);
foo!void.foo7!void(null);
foo!void.foo8(null);
foo!void.foo8!void(null);
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=212
template hasElaborateAssign212(S)
{
enum hasElaborateAssign212 = is(typeof(S.init.opAssign(rvalueOf212!S))) ||
is(typeof(lvalueOf212!S)) ;
}
T rvalueOf212(T)();
T lvalueOf212(T)();
template TypeTuple212(TList...)
{
alias TypeTuple212 = TList;
}
template Tuple212()
{
struct Tuple212
{
void opAssign(R)(R)
{
if (hasElaborateAssign212!R)
{
}
}
}
}
ref emplaceRef212()
{
static if (!hasElaborateAssign212!(Tuple212!()))
chunk;
}
class TaskPool212
{
void reduce()
{
Tuple212!() seed = void;
Tuple212!()[] results;
foreach(i; TypeTuple212!(0, 1))
results[i] = seed;
}
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=213
struct S213
{
int4 vec;
}
void test213()
{
S213 s, b;
assert(s == b);
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=218
struct S218a
{
this(int* pdata_)
{
pdata = pdata_;
}
void opIndexAssign(int, size_t) { }
int* pdata;
};
struct S218
{
S218a getS218a()
{
return S218a(data.ptr);
}
int[] data;
int[] tab2;
};
S218 f()
{
S218 r;
for(int i = 0; i < 1; ++i)
r.getS218a()[0] = 0;
return r;
}
S218 var;
static this()
{
var = f();
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=223
struct S223
{
long[8] field;
}
class C223
{
long[8] field;
}
S223 test223_1();
real test223_2();
string[long[8]] test223_3();
C223 test223_4();
long test223_5();
long[] test223_6();
long[8] test223_7();
C223[8] test223_8();
void delegate() test223_9();
bool test223()
{
return test223_1() == test223_1() &&
test223_1() is test223_1() &&
test223_2() == test223_2() &&
test223_2() is test223_2() &&
test223_3() == test223_3() &&
test223_3() is test223_3() &&
test223_4() == test223_4() &&
test223_4() is test223_4() &&
test223_5() == test223_5() &&
test223_5() is test223_5() &&
test223_6() == test223_6() &&
test223_6() is test223_6() &&
test223_7() == test223_7() &&
test223_7() is test223_7() &&
test223_8() == test223_8() &&
test223_8() is test223_8() &&
test223_9() == test223_9() &&
test223_9() is test223_9();
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=231
import imports.gdc231;
class Range231 : Widget231
{
override void* getStruct()
{
return null;
}
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=239
import imports.gdc239;
class C239
{
C239a *foo;
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=240
interface I204
{
void f();
}
class C204 : I204
{
void f();
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=241
import imports.gdc241a;
import imports.gdc241b : S241, C241, E241, N241;
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=242
struct S242a
{
enum M = S242a();
void iter() { }
}
void test242a()
{
return S242a.M.iter;
}
struct S242b
{
enum M = S242b();
void iter() { }
}
void test242b()
{
S242b.M.iter;
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=251
import imports.gdc251a;
import imports.gdc251b : C251;
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=253
import imports.gdc253;
class C253 : C253a
{
void test253() { }
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=255
class C255
{
void f2()
{
class C1
{
void f1()
{
void f0()
{
class C0
{
void test255()
{
f2();
}
}
}
}
}
}
}
class C255a
{
void f3()
{
class C1
{
void f2()
{
void f1()
{
void f0()
{
class C0
{
void test255a()
{
f3();
}
}
}
}
}
}
}
}
class C255b
{
void f4()
{
class C2
{
void f3()
{
void f2()
{
class C1
{
void f1()
{
void f0()
{
class C0
{
void test255b()
{
f4();
}
}
}
}
}
}
}
}
}
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=256
import imports.gdcpkg256 : gdc256;
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=261
void test261()
{
class C1
{
void f1()
{
class C2
{
void f2()
{
auto v = &f1;
}
}
}
}
}
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=280
struct RBNode280
{
RBNode280* _parent;
@property left(RBNode280*)
{
_parent = &this;
}
}
class RedBlackTree280
{
RBNode280* _end;
RBNode280* _begin;
this(int[] elems...)
{
_end = new RBNode280;
foreach (e; elems)
{
_end.left = _begin;
}
}
}
__gshared s = new RedBlackTree280('h');
/******************************************/
// https://bugzilla.gdcproject.org/show_bug.cgi?id=284
alias v284 = __vector(int[2]);
v284 test284(v284 a, ...)
{
return a + a;
}