toPreserves: unpack preservesTupleTail on records
This commit is contained in:
parent
ba0857c32b
commit
5e1e97e4df
|
@ -1,6 +1,6 @@
|
||||||
# Package
|
# Package
|
||||||
|
|
||||||
version = "20240116"
|
version = "20240118"
|
||||||
author = "Emery Hemingway"
|
author = "Emery Hemingway"
|
||||||
description = "data model and serialization format"
|
description = "data model and serialization format"
|
||||||
license = "Unlicense"
|
license = "Unlicense"
|
||||||
|
|
|
@ -417,8 +417,12 @@ proc toPreserves*[T](x: T): Value {.gcsafe.} =
|
||||||
hasVariant = true
|
hasVariant = true
|
||||||
elif T.hasCustomPragma(preservesRecord):
|
elif T.hasCustomPragma(preservesRecord):
|
||||||
result = Value(kind: pkRecord)
|
result = Value(kind: pkRecord)
|
||||||
for k, v in x.fieldPairs:
|
for label, field in x.fieldPairs:
|
||||||
var pr = fieldToPreserve(k, v)
|
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(pr)
|
||||||
result.record.add(toSymbol(T.getCustomPragmaVal(preservesRecord)))
|
result.record.add(toSymbol(T.getCustomPragmaVal(preservesRecord)))
|
||||||
elif T.hasCustomPragma(preservesTuple):
|
elif T.hasCustomPragma(preservesTuple):
|
||||||
|
|
Loading…
Reference in New Issue