2011/9/15 Alix Pexton <[email protected]>: > 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!
It is regression of fixing issue 2234 (http://d.puremagic.com/issues/show_bug.cgi?id=2234). I'll post pull request to fix it. Kenji Hara
