Make range checks in semConv (#7164)

* Remove NaN/Inf/NegInf magic
* Make range checks in semConv
* fix the failing line
* fix `firstOrd` and `lastOrd`
* fix `localError`
* remove debug comment
* Cleanup, fix failing test
* make tests green
This commit is contained in:
Oscar Nihlgård 2019-05-10 11:10:11 +02:00 • committed by Andreas Rumpf
commit de5c0d3aa9
9 changed files with 103 additions and 26 deletions

43
tests/misc/tconv.nim Normal file
View file

@ -0,0 +1,43 @@
template reject(x) =
static: assert(not compiles(x))
reject:
const x = int8(300)
reject:
const x = int64(NaN)
type
R = range[0..10]
reject:
const x = R(11)
reject:
const x = R(11.0)
reject:
const x = R(NaN)
reject:
const x = R(Inf)
type
FloatRange = range[0'f..10'f]
reject:
const x = FloatRange(-1'f)
reject:
const x = FloatRange(-1)
reject:
const x = FloatRange(NaN)
block:
const x = float32(NaN)
type E = enum a, b, c
reject:
const e = E(4)