Permit fromPreserve for subsets of dictionaries
This commit is contained in:
parent
c087294b23
commit
acdfd3c560
|
@ -1055,7 +1055,7 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
|
|||
result = result and fromPreserve(f, pr[i])
|
||||
inc i
|
||||
of pkDictionary:
|
||||
if tupleLen(T) == pr.len:
|
||||
if tupleLen(T) <= pr.len:
|
||||
result = true
|
||||
for key, val in fieldPairs(v):
|
||||
let pv = step(pr, toSymbol(key, E))
|
||||
|
@ -1084,7 +1084,7 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
|
|||
if result and i <= pr.len:
|
||||
result = result and fieldFromPreserve(key, val, pr.record[i])
|
||||
inc i
|
||||
result = result and (i == pr.len)
|
||||
result = result and (i <= pr.len)
|
||||
elif T.hasCustomPragma(preservesTuple):
|
||||
if pr.isSequence:
|
||||
result = true
|
||||
|
@ -1113,7 +1113,7 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
|
|||
key, v.dot(key), val)
|
||||
if not result: break
|
||||
inc i
|
||||
result = result and (i == pr.len)
|
||||
result = result and (i <= pr.len)
|
||||
elif T.hasCustomPragma(preservesOr):
|
||||
for kind in typeof(T.orKind):
|
||||
v = T(orKind: kind)
|
||||
|
@ -1137,7 +1137,7 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
|
|||
key, v.dot(key), val)
|
||||
if not result: break
|
||||
inc i
|
||||
result = result and (i == pr.len)
|
||||
result = result and (i <= pr.len)
|
||||
else:
|
||||
result = fromPreserveHook(v, pr)
|
||||
# a previous branch determined that the hook does not compile but
|
||||
|
|
Loading…
Reference in New Issue