/* PERMUTE_ARGS: RUN_OUTPUT: --- shared static this() Foo static ctor static ctor Bar static ctor Bar static dtor static dtor Foo static dtor shared static this() --- */ private import core.stdc.stdio; class Foo { static this() {printf("Foo static ctor\n");} static ~this() {printf("Foo static dtor\n");} } static this() {printf("static ctor\n");} static ~this() {printf("static dtor\n");} shared static this() { printf("shared static this()\n"); } shared static ~this() { printf("shared static this()\n"); } class Bar { static this() {printf("Bar static ctor\n");} static ~this() {printf("Bar static dtor\n");} } /***********************************************/ // https://issues.dlang.org/show_bug.cgi?id=6677 int global6677; static this() nothrow pure @safe { int* p; static assert(!__traits(compiles, ++p)); static assert(!__traits(compiles, ++global6677)); auto throwit = { throw new Exception("sup"); }; static assert(!__traits(compiles, throwit() )); } shared static this() nothrow pure @safe { int* p; static assert(!__traits(compiles, ++p)); static assert(!__traits(compiles, ++global6677)); } /***********************************************/ // https://issues.dlang.org/show_bug.cgi?id=7533 struct Foo7533(int n) { pure static this() { } } alias Foo7533!5 Bar7533; /***********************************************/ int main() { return 0; }