mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* zero initialization union casts * cleans up and adds a test case for #19101 * uses nimZeroMem
27 lines
622 B
Nim
27 lines
622 B
Nim
import std/[strutils]
|
|
import std/[assertions, objectdollar]
|
|
|
|
# bug #19101
|
|
type
|
|
Small = object
|
|
a: int
|
|
|
|
Big = object
|
|
a, b, c, d: int
|
|
|
|
proc main =
|
|
var
|
|
n = 1'i8
|
|
f = 2.0
|
|
s = Small(a: 1)
|
|
b = Big(a: 12345, b: 23456, c: 34567, d: 45678)
|
|
|
|
doAssert $cast[int](f).toBin(64) == "0100000000000000000000000000000000000000000000000000000000000000"
|
|
f = cast[float](n)
|
|
doAssert $cast[int](f).toBin(64) == "0000000000000000000000000000000000000000000000000000000000000001"
|
|
|
|
doAssert $b == "(a: 12345, b: 23456, c: 34567, d: 45678)"
|
|
b = cast[Big](s)
|
|
doAssert $b == "(a: 1, b: 0, c: 0, d: 0)"
|
|
main()
|