backport json-related part of #17469

This commit is contained in:
narimiran
2021-03-24 17:48:39 +01:00
parent e5027dc3da
commit 82561f31eb
2 changed files with 11 additions and 10 deletions

View File

@@ -1064,12 +1064,13 @@ when defined(nimFixedForwardGeneric):
dst = jsonNode.copy
proc initFromJson[T: SomeInteger](dst: var T; jsonNode: JsonNode, jsonPath: var string) =
when T is uint|uint64:
when T is uint|uint64 or (not defined(js) and int.sizeof == 4):
verifyJsonKind(jsonNode, {JInt, JString}, jsonPath)
case jsonNode.kind
of JString:
dst = T(parseBiggestUInt(jsonNode.str))
let x = parseBiggestUInt(jsonNode.str)
dst = cast[T](x)
else:
verifyJsonKind(jsonNode, {JInt}, jsonPath)
dst = T(jsonNode.num)
else:
verifyJsonKind(jsonNode, {JInt}, jsonPath)

View File

@@ -72,16 +72,16 @@ template fn() =
block:
let a = (int32.high, uint32.high)
testRoundtrip(a): "[2147483647,4294967295]"
when not defined(js):
when int.sizeof > 4:
block:
let a = (int64.high, uint64.high)
testRoundtrip(a): "[9223372036854775807,18446744073709551615]"
block:
let a = (int.high, uint.high)
when int.sizeof == 4:
testRoundtrip(a): "[2147483647,4294967295]"
else:
testRoundtrip(a): "[9223372036854775807,18446744073709551615]"
block:
let a = (int.high, uint.high)
when int.sizeof == 4:
testRoundtrip(a): "[2147483647,4294967295]"
else:
testRoundtrip(a): "[9223372036854775807,18446744073709551615]"
block: # case object
type Foo = object