fixes #20089; remove setPointer since strings/seqs are not pointers with ORC (#20090)

fixes #20089; remove setPointer since strings/seqs are not pointers anymore
This commit is contained in:
ringabout
2022-07-26 22:48:01 +08:00
committed by GitHub
parent 3d5f10f0d0
commit 1c39af3389
2 changed files with 22 additions and 2 deletions

View File

@@ -163,7 +163,10 @@ proc loadAny(p: var JsonParser, a: Any, t: var Table[BiggestInt, pointer]) =
of akSequence:
case p.kind
of jsonNull:
setPointer(a, nil)
when defined(nimSeqsV2):
invokeNewSeq(a, 0)
else:
setPointer(a, nil)
next(p)
of jsonArrayStart:
next(p)
@@ -230,7 +233,10 @@ proc loadAny(p: var JsonParser, a: Any, t: var Table[BiggestInt, pointer]) =
of akString:
case p.kind
of jsonNull:
setPointer(a, nil)
when defined(nimSeqsV2):
setString(a, "")
else:
setPointer(a, nil)
next(p)
of jsonString:
setString(a, p.str)

View File

@@ -1,3 +1,7 @@
discard """
matrix: "--mm:orc; --mm:refc"
"""
import std/marshal
# TODO: add static tests
@@ -136,6 +140,16 @@ block:
let test = to[LegacyEntry](str)
doAssert $test == """(numeric: "")"""
block:
let str = """{"numeric": null}"""
type
LegacyEntry = object
numeric: seq[int]
var test = to[LegacyEntry](str)
doAssert $test == """(numeric: @[])"""
# bug #16022
block:
let p: proc (): string = proc (): string = "hello world"