Kill as soon as possible the special case handling of tuples in foreach

bearophile via Digitalmars-d digitalmars-d at puremagic.com
Tue Jan 6 07:32:47 PST 2015


I strongly suggest to "burn with fire", I mean, warn and then 
deprecate the special case of automatic tuple unpacking in 
foreach loops in dmd 2.067:


void main() {
     import std.typecons, std.range;

     auto data1 = [tuple("red", 10), tuple("blue", 20)];
     foreach (x, y; data1) {
         pragma(msg, typeof(x), " ", typeof(y));
     }

     auto data2 = only(tuple("red", 10), tuple("blue", 20));
     foreach (x, y; data2) {
         pragma(msg, typeof(x), " ", typeof(y));
     }
}



Output:

uint Tuple!(string, int)
string int


See issues:

https://issues.dlang.org/show_bug.cgi?id=9817
https://issues.dlang.org/show_bug.cgi?id=7361

It causes troubles today because it's a special-cased trap. And 
it will cause even more troubles in future if/when we add 
built-in tuple unpacking to D. So please remove this wart, thank 
you.

Bye,
bearophile


More information about the Digitalmars-d mailing list