Alex Rønne Petersen:
1) Any half-decent compiler *will* optimize this thanks to a wide array of standard dataflow analyses.
'y' was meant to be a value unknown at compile-time.
I don't know from where people got this crazy idea that a switch statement MUST compile to a jump table *no matter what*
I'd like portable computed gotos in D, but they are not coming soon in DMD, it seems.
If someone is aware of the jump table optimization of switch statements, then surely they know that using a runtime value will kill that optimization.
That annotation doesn't introduce compiler optimizations (the compiler will optimize as much as possible in every cases). It just gives a compile-time error if you use a run-time value in a switch case. It's just meant to avoid mistakes, like using a run-time value instead of a D enum in a switch case, just like that Scala annotation.
Bye, bearophile
