Fix expand of embedded Preserves

This commit is contained in:
Emery Hemingway 2022-12-13 22:05:05 -06:00
parent adec7fd7ad
commit 66a653a775
2 changed files with 4 additions and 2 deletions

View File

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

View File

@ -1245,7 +1245,9 @@ proc contract*[E](pr: sink Preserve[E]; op: proc (v: E): Preserve[void]): Preser
proc expand*[E](pr: sink Preserve[void]; op: proc (v: Preserve[void]): Preserve[E]): Preserve[E] = proc expand*[E](pr: sink Preserve[void]; op: proc (v: Preserve[void]): Preserve[E]): Preserve[E] =
## Convert `Preserve[void]` to `Preserve[E]` using an `Preserve[void] → Preserve[E]` procedure. ## Convert `Preserve[void]` to `Preserve[E]` using an `Preserve[void] → Preserve[E]` procedure.
if not pr.embedded: if pr.embedded:
result = op(pr)
else:
case pr.kind case pr.kind
of pkBoolean, pkFloat, pkDouble, pkSignedInteger, pkString, pkByteString, pkSymbol: of pkBoolean, pkFloat, pkDouble, pkSignedInteger, pkString, pkByteString, pkSymbol:
result = cast[Preserve[E]](pr) result = cast[Preserve[E]](pr)