static import std.signals - what's wrong?

Hasan Aljudy hasan.aljudy at gmail.com
Fri Dec 1 13:04:19 PST 2006



Vladimir Bezhenar wrote:
> Code:
> static import std.signals;
> 
> class A {
>     mixin std.signals.Signal!();
> }
> 
> When I try to compile it, there is a lot of confusing messages about errors in
> std/signals.d
> If I remove "static" from the first line, all works ok.

I don't know if Walter would call that "a bug"; it's consistent with the 
specs but IMHO it's a bug. (If it's caused by what I think it is ..)

you're instantiating that template in this file, so the declarations in 
that template are "copied over" to your file, i.e. the scope where the 
mixin happens; but these declaration have dependencies, and these 
dependencies are not available in your file because your import is static.

I'm not sure if that makes any sense at all.

example:
a.d:
----------
struct A { .. }

template M()
{
    A a; //this declaration depends on the declaration of struct A
}

----------

b.d:
---------
static import a;

mixin a.M!(); //problem, struct A cannot be found from this scope 
(because the import is static)
------------



More information about the Digitalmars-d mailing list