Unexpected foreach lowering
Steven Schveighoffer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Aug 11 05:50:36 PDT 2016
On 8/10/16 5:14 PM, ag0aep6g wrote:
> On 08/10/2016 10:54 PM, Steven Schveighoffer wrote:
>> The issue is that it tries using [] on the item to see if it defines a
>> range-like thing. Since you don't define opSlice(), it automatically
>> goes to the subrange.
>>
>> This breaks for int[] as well as Array.
>>
>> If I add opSlice to your code (and return this) it works.
>>
>> This is definitely a bug, it should try range functions before opSlice.
>> Please file.
>
> Related:
>
> https://issues.dlang.org/show_bug.cgi?id=14619
That's the same issue. Thanks. Your case is even worse, because calling
save could be unnecessary and costly.
Note that the compiler will turn this:
foreach(...; foo[]) into this: foreach(...; foo[][])
ugly...
-Steve
More information about the Digitalmars-d-learn
mailing list