alternative way to fix #16022 (#16064) [backport:1.4]

* alternative way to fix #16022
* add testcase for #16022

[backport:1.4]

(cherry picked from commit 6cf5ca1dc2)
This commit is contained in:
flywind
2020-11-20 16:06:18 +08:00
committed by narimiran
parent e94f9cdb4f
commit 9c6444c192
2 changed files with 10 additions and 3 deletions

View File

@@ -327,10 +327,10 @@ proc setPointer*(x: Any, y: pointer) =
## ``akString``, ``akCString``, ``akProc``, ``akRef``, ``akPtr``,
## ``akPointer``, ``akSequence``.
assert x.rawType.kind in pointerLike
if y != nil:
if y != nil and x.rawType.kind != tyPointer:
genericAssign(x.value, y, x.rawType)
else:
cast[ppointer](x.value)[] = nil
cast[ppointer](x.value)[] = y
proc fieldsAux(p: pointer, n: ptr TNimNode,
ret: var seq[tuple[name: cstring, any: Any]]) =

View File

@@ -7,6 +7,7 @@ omega 200
Some(null)
None[JsonNode]
(numeric: "")
hello world
'''
joinable: false
"""
@@ -138,7 +139,7 @@ block:
echo ($$a2).to[:Option[JsonNode]]
# bug #15620
# bug #15620
block:
let str = """{"numeric": null}"""
@@ -148,3 +149,9 @@ block:
let test = to[LegacyEntry](str)
echo test
# bug #16022
block:
let p: proc () = proc () = echo "hello world"
let poc = (to[typeof(p)]($$p))
poc()