Turned out not to be a good idea, as the compiler silently accepts "shared private static this() {...}" and does not emit the dead code anymore. But.. this constructor is run together with the un-shared ones, ie possibly _after_ them... (this is not section-gc specific, happens w/o it too)

try `private shared static this()`
AFAIK static ctors have some attribute ordering issue.

import std.stdio;

/* gcfuncdata2.d is a copy of this module, w/o main() */
import gcfuncdata2;

auto p(S...)(S args) { return stdout.writeln(__FILE__~": ", args); }

void main(string[] args){ p("main"); }

static this() { p("ctor1"); }
static this() { p("ctor2"); }
shared static this() { p("shared ctor1"); }
shared static this() { p("shared ctor2"); }

static ~this() { p("dtor1"); }
static ~this() { p("dtor2"); }
shared static ~this() { p("shared dtor1"); }
shared static ~this() { p("shared dtor2"); }

unittest { p("unittest1"); }
unittest { p("unittest2"); }

Also add class static ctors and function static variables.

Reply via email to