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:
parent
3a479ff53f
commit
de5c0d3aa9
9 changed files with 103 additions and 26 deletions
43
tests/misc/tconv.nim
Normal file
43
tests/misc/tconv.nim
Normal 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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue