diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2023-06-29 16:51:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-29 10:51:18 +0200 |
commit | d139d99946c97dca9c864709726841855a089496 (patch) | |
tree | a305b0bcaa18e365bfe2bfb059cd7c69a40dba2f /tests | |
parent | 57de460437924a951d393ced8b7c88418fe2541a (diff) | |
download | Nim-d139d99946c97dca9c864709726841855a089496.tar.gz |
fixes #19101; zero initialization union casts (#22185)
* zero initialization union casts * cleans up and adds a test case for #19101 * uses nimZeroMem
Diffstat (limited to 'tests')
-rw-r--r-- | tests/stdlib/tcasts.nim | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/stdlib/tcasts.nim b/tests/stdlib/tcasts.nim new file mode 100644 index 000000000..e01c7e940 --- /dev/null +++ b/tests/stdlib/tcasts.nim @@ -0,0 +1,26 @@ +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() |