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

Reply via email to