mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
* Fix #8404 JS backend doesn't handle float->int type conversion * handle conv to uint as cast, discard other cases * limit to int32, times use int64 * toInt including tyInt64 break times timezones lib, ignore for now * also affect to vm * move to tests/misc/t8404.nim
34 lines
586 B
Nim
34 lines
586 B
Nim
discard """
|
|
targets: "c cpp js"
|
|
"""
|
|
template main() =
|
|
block: # bug #8404
|
|
# can conv
|
|
template float2int(T) =
|
|
var a = -1.0
|
|
let b = T(a)
|
|
doAssert b < 0
|
|
let c = b + 1
|
|
doAssert c is T
|
|
doAssert c == 0
|
|
|
|
float2int(int8)
|
|
float2int(int16)
|
|
float2int(int32)
|
|
float2int(int64)
|
|
|
|
block:
|
|
# can handle middle conv
|
|
# `/` can trigger int to float
|
|
template float2int(T) =
|
|
let n = T(1 / 256)
|
|
doAssert n == 0
|
|
|
|
float2int(int8)
|
|
float2int(int16)
|
|
float2int(int32)
|
|
# float2int(int64)
|
|
main()
|
|
static:
|
|
main()
|