Switches use binary search on a sorted array. Using floating point NaN either as a case entry or as a lookup value therefore does not work properly. I think the current situation can lead to bugs easily, e.g. when using case ranges with floats as in this rather artificial example:
int is_in_range(float f) { switch (v) { case 0.0..1.0: return 1; default: return 0 } }
I think we should (1) issue a warning when Math.nan is used inside a case and (2) make sure that switch (Math.nan) does not match any case.
Any comments?
arne