new move analyser2 (#20471)

* produce better code for closure environment creation
* new 'first write' analysis; 
* scope based move analyser
* code cleanup

Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
This commit is contained in:
Andreas Rumpf
2022-10-01 16:46:51 +02:00
committed by GitHub
parent cfff454cf9
commit 8d47bf1822
19 changed files with 472 additions and 684 deletions

View File

@@ -302,8 +302,7 @@ proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) {.since: (1, 1).} =
unzipped2 = @['a', 'b', 'c']
assert zipped.unzip() == (unzipped1, unzipped2)
assert zip(unzipped1, unzipped2).unzip() == (unzipped1, unzipped2)
result[0] = newSeq[S](s.len)
result[1] = newSeq[T](s.len)
result = (newSeq[S](s.len), newSeq[T](s.len))
for i in 0..<s.len:
result[0][i] = s[i][0]
result[1][i] = s[i][1]