Use step rather than [] for dictionaries

This commit is contained in:
Emery Hemingway 2022-10-25 17:42:04 -05:00
parent 5c72729f23
commit 7125eadd49
1 changed files with 5 additions and 3 deletions

View File

@ -240,7 +240,7 @@ proc excl*(pr: var Preserve; key: Preserve) =
delete(pr.set, i, i)
break
proc `[]`*(pr, key: Preserve): Preserve =
proc `[]`*(pr, key: Preserve): Preserve {.deprecated: "use step instead".} =
## Select a value by `key` from `pr`.
## Works for sequences, records, and dictionaries.
if pr.isDictionary:
@ -940,8 +940,10 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
if tupleLen(T) == pr.len:
result = true
for key, val in fieldPairs(v):
try: result = fromPreserve(val, pr[toSymbol(key, E)])
except KeyError: result = false
let pv = step(pr, toSymbol(key, E))
result =
if pv.isSome: fromPreserve(val, get pv)
else: false
if not result: break
else: discard
elif T is ref: