toPreserves: unpack preservesTupleTail on records

This commit is contained in:
Emery Hemingway 2024-01-18 22:23:35 +02:00
parent ba0857c32b
commit 5e1e97e4df
2 changed files with 8 additions and 4 deletions

View File

@ -1,6 +1,6 @@
# Package
version = "20240116"
version = "20240118"
author = "Emery Hemingway"
description = "data model and serialization format"
license = "Unlicense"

View File

@ -417,9 +417,13 @@ proc toPreserves*[T](x: T): Value {.gcsafe.} =
hasVariant = true
elif T.hasCustomPragma(preservesRecord):
result = Value(kind: pkRecord)
for k, v in x.fieldPairs:
var pr = fieldToPreserve(k, v)
result.record.add(pr)
for label, field in x.fieldPairs:
when x.dot(label).hasCustomPragma(preservesTupleTail):
for e in field.items:
result.record.add(toPreserves(e))
else:
var pr = fieldToPreserve(label, field)
result.record.add(pr)
result.record.add(toSymbol(T.getCustomPragmaVal(preservesRecord)))
elif T.hasCustomPragma(preservesTuple):
result = initSequence(0)