diff --git a/src/preserves.nim b/src/preserves.nim index 63be625..e3b74d7 100644 --- a/src/preserves.nim +++ b/src/preserves.nim @@ -874,7 +874,8 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool = pr == lit else: fromPreserve(val, pr) - when T.hasCustomPragma(preservesRecord): + when T.hasCustomPragma(unpreservable): {.fatal: "unpreservable type " & $T.} + elif T.hasCustomPragma(preservesRecord): if pr.isRecord and pr.label.isSymbol(T.getCustomPragmaVal(preservesRecord)): result = true var i: int @@ -897,7 +898,7 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool = inc j else: if result and i < pr.len: - result = result and fromPreserve(field, pr.sequence[i]) + result = result and fieldFromPreserve(name, field, pr.sequence[i]) inc i result = result and (i == pr.len) elif T.hasCustomPragma(preservesDictionary):