From 5e1e97e4df838fcaed18d797b8a93705a649fae5 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 18 Jan 2024 22:23:35 +0200 Subject: [PATCH] toPreserves: unpack preservesTupleTail on records --- preserves.nimble | 2 +- src/preserves.nim | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/preserves.nimble b/preserves.nimble index 7510231..5a39704 100644 --- a/preserves.nimble +++ b/preserves.nimble @@ -1,6 +1,6 @@ # Package -version = "20240116" +version = "20240118" author = "Emery Hemingway" description = "data model and serialization format" license = "Unlicense" diff --git a/src/preserves.nim b/src/preserves.nim index 8902718..570cfd0 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -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)