t14127_cast_number.nim 509 B

12345678910111213141516171819202122232425262728293031
  1. discard """
  2. targets: "c cpp js"
  3. """
  4. block: # bug #14127
  5. template int2uint(T) =
  6. var a = -1
  7. let b = cast[T](a)
  8. doAssert b < 0
  9. let c = b + 1
  10. doAssert c is T
  11. doAssert c == 0
  12. int2uint(int8)
  13. int2uint(int16)
  14. int2uint(int32)
  15. int2uint(int64)
  16. block: # maybe related
  17. template uint2int(T) =
  18. var a = 3
  19. let b = cast[T](a)
  20. doAssert b > 0
  21. let c = b - 1
  22. doAssert c is T
  23. doAssert c == 2
  24. uint2int(uint8)
  25. uint2int(uint16)
  26. uint2int(uint32)
  27. uint2int(uint64)