From 806c4118fcac8e17504dada41b90d0316204cd64 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Wed, 7 Dec 2022 13:10:14 -0600 Subject: [PATCH] Trivially convert from Preserve[void] to Preserve[E] --- src/preserves.nim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/preserves.nim b/src/preserves.nim index 27313d1..6763d6c 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -31,6 +31,8 @@ proc hash*(s: Symbol): Hash {.borrow.} type Preserve*[E = void] = object + embedded*: bool + ## Flag to mark embedded Preserves case kind*: PreserveKind of pkBoolean: bool*: bool @@ -58,8 +60,6 @@ type # TODO: Tables of pkEmbedded: embed*: E - embedded*: bool - ## Flag to mark embedded Preserves DictEntry[E] = tuple[key: Preserve[E], val: Preserve[E]] @@ -749,6 +749,8 @@ proc toPreserve*[T](x: T; E = void): Preserve[E] = elif T is E: when E is void: {.error: "cannot embed void".} result = embed(x) + elif T is Preserve[void]: + result = cast[Preserve[E]](x) elif compiles(toPreserveHook(x, E)): result = toPreserveHook(x, E) elif T is enum: