is this a bug? opUnary!"++" Error: var has no effect

Timon Gehr timon.gehr at gmx.ch
Wed Feb 8 17:50:52 PST 2012


On 02/09/2012 12:47 AM, Zach the Mystic wrote:
> On 2/8/12 4:58 PM, Timon Gehr wrote:
>> This is indeed a bug.
>>
>> The expression is rewritten internally into (pseudo code)
>>
>> (auto __pitmp1481 = has.myArc, has.myArc.opUnary!"++"(), __pitmp1481);
>>
>> This introduces a sub-expression with no effect.
>
> Is that because has.myArc.opUnary!"++"() is going to be ignored at that
> level of compiler activity? The compiler demands only that __pitmp1481
> has a value at that point?

This is the issue:

void main(){
     int x;
     ++x, x; // error
}

While the whole expression has an effect, the single 'x' does not have 
an effect.

>
>> You may want to file a
>> bug report. For now, just using ++has.myArc; should work around the
>> issue.
>
> http://d.puremagic.com/issues/show_bug.cgi?id=7467
>
> Thanks, man. You're awesome!

You're welcome. =)


More information about the Digitalmars-d-learn mailing list