Trivially convert from Preserve[void] to Preserve[E]
This commit is contained in:
parent
92834a8968
commit
806c4118fc
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue