diff --git a/preserves.nimble b/preserves.nimble index 97bf736..6644b0d 100644 --- a/preserves.nimble +++ b/preserves.nimble @@ -1,6 +1,6 @@ # Package -version = "20221208" +version = "20221213" author = "Emery Hemingway" description = "data model and serialization format" license = "Unlicense" diff --git a/src/preserves.nim b/src/preserves.nim index a7db9ab..b0f28fc 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -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] = ## 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 of pkBoolean, pkFloat, pkDouble, pkSignedInteger, pkString, pkByteString, pkSymbol: result = cast[Preserve[E]](pr)