fromPreserve: fix conversion of literals in tuples

This commit is contained in:
Emery Hemingway 2021-10-25 01:52:09 +02:00
parent cbf27a0ee0
commit a03a188bc2
1 changed files with 3 additions and 2 deletions

View File

@ -874,7 +874,8 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
pr == lit
else:
fromPreserve(val, pr)
when T.hasCustomPragma(preservesRecord):
when T.hasCustomPragma(unpreservable): {.fatal: "unpreservable type " & $T.}
elif T.hasCustomPragma(preservesRecord):
if pr.isRecord and pr.label.isSymbol(T.getCustomPragmaVal(preservesRecord)):
result = true
var i: int
@ -897,7 +898,7 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
inc j
else:
if result and i < pr.len:
result = result and fromPreserve(field, pr.sequence[i])
result = result and fieldFromPreserve(name, field, pr.sequence[i])
inc i
result = result and (i == pr.len)
elif T.hasCustomPragma(preservesDictionary):