/* RUN_OUTPUT: --- Success --- */ extern(C) int printf(const char*, ...); /******************************************/ // https://issues.dlang.org/show_bug.cgi?id=12078 class B12078(T) { static assert(is(T : B12078!T), "not related"); } class D12078 : B12078!D12078 { } interface X12078(T) { static assert(is(T : X12078!T), "not related"); } interface Y12078 : X12078!Y12078 { } void test12078() { static assert(is(D12078 : B12078!D12078)); static assert(is(Y12078 : X12078!Y12078)); } /******************************************/ // https://issues.dlang.org/show_bug.cgi?id=12143 class Node12143 { alias typeof(true ? Node12143.init : Class12143.init) V; static assert(is(V == Node12143)); } class Type12143 : Node12143 {} class Class12143 : Type12143 {} /***************************************************/ // https://issues.dlang.org/show_bug.cgi?id=13353 interface Base13353(T) { static assert(is(T : Base13353!T)); } interface Derived13353 : Base13353!Derived13353 { void func(); } class Concrete13353 : Derived13353 { void func() {} } /***************************************************/ // https://issues.dlang.org/show_bug.cgi?id=15733 class CStmt15733 : CNode15733 {} class CDecl15733 : CStmt15733 {} class CNode15733 { mixin CMix!CDecl15733; } template CMix(T){ mixin("static " ~ T.stringof ~ " x;"); } interface IStmt15733 : INode15733 {} interface IDecl15733 : IStmt15733 {} interface INode15733 { mixin IMix!IDecl15733; } template IMix(T){ mixin("static " ~ T.stringof ~ " x;"); } /***************************************************/ // https://issues.dlang.org/show_bug.zip?id=20716 extern(C++): struct S20716 { void* s; ~this() {} // or this(this) {} } interface I20716 { S20716 x(); } final class C20716 : I20716 { int l = 3; S20716 x() { //printf("this = %p, %p\n", this, &this.l); assert(l == 3); //fails return S20716.init; } } extern(D): void test20716() { auto s = new C20716().x; auto t = new C20716().I20716.x; } /***************************************************/ int main() { test20716(); printf("Success\n"); return 0; }