// { 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; }