mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-17 08:34:20 +00:00
backport json-related part of #17469
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user