foreach/iota countdown

Brian Schott briancschott at gmail.com
Mon Feb 17 21:21:23 PST 2014


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)'?


More information about the Digitalmars-d-learn mailing list