On 15/09/2011 06:56, Benjamin Thaut wrote:
The following programmixin 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...
