Careful with those variable length tuples

This commit is contained in:
Emery Hemingway 2021-12-24 00:38:02 +01:00
parent e25e06efba
commit ba4d567791
1 changed files with 7 additions and 6 deletions

View File

@ -882,12 +882,13 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
var i: int
for name, field in fieldPairs(v):
when v.dot(name).hasCustomPragma(preservesTupleTail):
setLen(v.dot(name), pr.len - i)
var j: int
while result and i < pr.len:
result = result and fieldFromPreserve(name, v.dot(name)[j], pr.sequence[i])
inc i
inc j
if pr.len >= i:
setLen(v.dot(name), pr.len - i)
var j: int
while result and i < pr.len:
result = result and fieldFromPreserve(name, v.dot(name)[j], pr.sequence[i])
inc i
inc j
else:
if result and i < pr.len:
result = result and fieldFromPreserve(name, field, pr.sequence[i])