if code like this worked: http://dpaste.dzfl.pl/7ea4eb03f02e
A few reasons why it doesn't:
You have to duplicate the case keyword when declaring case
ranges. Why?
Case ranges are inclusive at both ends of the range, unlike in
foreach. Again, why?
exponential notation (e.g. `2e9`) returns a double, not a long.
The exponential notation isn't really a problem, declaring some
enums `enum i2e9 = cast(long)2e9;` deals with it fine. The case
ranges are a wart though.
Solution:
Allow the second `case` keyword to be removed, which would then
have the same semantics as the range in foreach.
E.g.
case 0 .. 4: // matches 0,1,2,3
case 0: .. case 4: // matches 0,1,2,3,4
No breakage, greater consistency, neater code, good stuff. At
least as good as pascal.
Even better, the .. operator would become general (overloadable,
too) and the case range would just be a special case of it.