March 08, 2005
There is a problem with static constructors: It seems as prepending this()
directly with static will run the constructor correctly; with an enclosing
static{ this() } the constructor will not be run:


import std.stdio;

class C1
{
  static
  {
    this()
    {
      writefln("C1 static ctor");
    }
  }
}

class C2
{
  static this()
  {
    writefln("C2 static ctor");
  }
}

int main()
{
  return 0;
}


Executing this prog will give me only "C2 static ctor", but not both, as it should! I'm using Linux DMD version 0.114;

greetings,

Lukas Pinkowski
March 16, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Lukas Pinkowski schrieb am Tue, 08 Mar 2005 01:52:02 +0100:
> There is a problem with static constructors: It seems as prepending this()
> directly with static will run the constructor correctly; with an enclosing
> static{ this() } the constructor will not be run:
>
>
> import std.stdio;
>
> class C1
> {
>   static
>   {
>     this()
>     {
>       writefln("C1 static ctor");
>     }
>   }
> }
>
> class C2
> {
>   static this()
>   {
>     writefln("C2 static ctor");
>   }
> }
>
> int main()
> {
>   return 0;
> }
>
>
> Executing this prog will give me only "C2 static ctor", but not both, as it should! I'm using Linux DMD version 0.114;

I thought the "static{ this... }" behavior was documented somewhere.

Added to DStress as http://dstress.kuehne.cn/run/static_30.d

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFCOGKp3w+/yD4P9tIRAppWAJ984EbYbTNkK+dn19KJmUMOBwcwkACfaNH9
lUqXxqJclSRxxlO3MePvz2U=
=HAiY
-----END PGP SIGNATURE-----