On 08.08.2010 22:55, Andrej Mitrovic wrote:
Here's an example from TDPL (with writeln's) with two modules:

-------------------------------------
module MA;

import std.stdio;
import MB;

class A
{
     static this()
     {
         writeln("A's constructor called.");
     }
}

void main()
{
}
-------------------------------------

-------------------------------------
module MB;

import std.stdio;

class B
{
     static this()
     {
         writeln("B's constructor called.");
     }
}
-------------------------------------

Compiling and running this examples gives this output:
B's constructor called.
A's constructor called.


But, according to TDPL, page 189, it states:

"MA imports MB. Then A's static class constructors run before B's"

I've tried using a driver module which imports MA and then MB, but as long as 
MA itself imports MB then I still get the same output. Error in text / in DMD?
In text I guess - consider A static constructor uses class B that is in MB (as it can, but not the other way around).
MA should have B's static constructor called, or all sorts of trouble come.

--
Dmitry Olshansky

Reply via email to