Tweak to and fromPresrves for EmbeddedRef

This commit is contained in:
Emery Hemingway 2024-01-07 17:37:28 +02:00
parent 416af8ff5f
commit 7b17f935ea
1 changed files with 4 additions and 3 deletions

View File

@ -375,6 +375,8 @@ proc toPreserves*[T](x: T): Value {.gcsafe.} =
elif T is Ordinal:
result = Value(kind: pkRegister, register: x.ord)
assert result.register.T == x
elif T is EmbeddedRef:
result = embed(x)
elif T is ptr | ref:
if system.`==`(x, nil): result = initRecord("null")
else: result = toPreserves(x[])
@ -660,9 +662,8 @@ proc fromPreserves*[T](v: var T; pr: Value): bool {.gcsafe.} =
if not result: break
else: discard
elif T is EmbeddedRef:
if pr.kind == pkEmbedded and pr.embeddedRef of T:
v = T(pr.embeddedRef)
result = true
v = T(pr.embeddedRef)
result = true
elif T is ref:
if isNil(v): new(v)
result = fromPreserves(v[], pr)