blob: b00277b789e612456988778f5a064dc160508c48 [file] [log] [blame]
/*
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;
}