On 10.03.2010 13:13, Walter Bright wrote:
Walter Bright wrote:
Max Samukha wrote:
2. A third module cannot be used. At least, we haven't been able to
figure out how to do that. Probably, something could be hacked up if
this bug (feature) is fixed
http://d.puremagic.com/issues/show_bug.cgi?id=2671

Thanks, I'll have a look at it.

The example in the bug report works on D1 and D2. I cannot reproduce the
error. I marked it as "worksforme"; if I've got the test case wrong
please reopen it.

My example is incorrect, sorry. b and c should be circularly imported:

module a;

template Foo(int i)
{
    static this()
    {
    }
}

void main() { }
----

module b;

import a;
import c;

alias Foo!(1) foo;
----

module c;

import a;
import b;

alias Foo!(2) foo;
----
Error: circular initialization dependency with module b

Following the logic that Foo is not a mixin template, I hoped to cheat the compiler so that the static constructors ran during a's initialization, avoiding the circular dependency error. I was wrong.

Still looking for a solution. Basically, there should be a way to enable the following:

module a;

template Foo()
{
    static int a;
    static this()
    {
       a = 42;
    }
}

----
module b;
import c;
import a;

mixin Foo;

----
module c;
import b;
import a;

mixin Foo;



Reply via email to