Possible UDA bug

Timon Gehr timon.gehr at gmx.ch
Sun Feb 24 11:42:56 PST 2013


On 02/24/2013 08:19 PM, Timon Gehr wrote:
> On 02/24/2013 05:04 PM, jerro wrote:
>> This code currently compiles:
>>
>> int bar();
>> @bar() void foo(){}
>>
>> But this gives an error, as expected:
>>
>> int bar();
>> @bar() void foo(){}
>> pragma(msg, __traits(getAttributes, foo));
>>
>> I would expect the first example to give an error too. Is the current
>> behavior deliberate or is it a DMD bug?
>
> Bug.

Actually the documentation does not treat this at all. However, it is 
not the behaviour discussed on the newsgroup.

Note that it introduces a funny little macro system into the language.

Eg. this:

import std.stdio;
int x;
@(write(x++),writeln()) void foo(){}

void main(){
     __traits(getAttributes, foo);
     __traits(getAttributes, foo)[0];
     __traits(getAttributes, foo)[0];
}

Outputs:

0
12


More information about the Digitalmars-d mailing list