On Tuesday, 18 February 2014 at 05:21:24 UTC, Brian Schott wrote:
On Monday, 17 February 2014 at 19:22:38 UTC, simendsjo wrote:
Should the following two uses be a compile-time error?
 foreach(i; 10 .. 0) // Never executes

 foreach(i; iota(10, 0)) // .. neither does this

I would like the second to either be a compile-time error or automagically use a negative step.

So we need to use a negative step in iota() or use a for loop
 foreach(i; iota(10, 0, -1)) // as expected

I just added this check to DScanner:

-------------
import std.stdio;

void main(string[] args)
{
        auto x = args[3 .. 2];
        foreach (i; 20 .. 10)
        {
        }
}
-------------
/home/alaran/tmp/test.d(5:16)[warn]: 3 is larger than 2. This slice is likely incorrect. /home/alaran/tmp/test.d(6:22)[warn]: 20 is larger than 10. Did you mean to use 'foreach_reverse( ... ; 10 .. 20)'?

Isn't foreach_reverse being deprecated?

Reply via email to