On 15/09/2011 06:56, Benjamin Thaut wrote:
The following program

mixin template Members(){
static int i1;
static int i2;
static int i3; //comment out to make func2 visible
static int i4; //comment out to make func1 visible
}

class Test {
mixin Members;

typedef void function() func1;
typedef bool function() func2;

static void init(){
foreach(m;__traits(allMembers,Test)){
pragma(msg,m);
}
}
}

int main(string[] argv)
{
return 0;
}

Gives me the output:
i1
i2
i3
i4
toString
toHash
opCmp
opEquals
Monitor
factory

If I comment out i4:
i1
i2
i3
func1
toString
...

And if I comment out i3 in addition to i4:
i1
i2
func1
func2
toString
...

Is this some new feature of mixin I'm missing, oder is this a bug?
Started to happen in dmd 2.055 does not happen with dmd 2.054


Moving the mixin to between the typedefs has the same effect as commenting out i4 (only the order of the members is different). Moving the mixin to after both typedefs has the same effect as commenting out both i3 and i4 (modulo change of order). I think that shows that it is definitely a bug and not a feature!

A...

Reply via email to