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)