ARC: closure bugfixes (#12677)
* ARC: closure bugfixes * progress * ARC closures: create =hooks for captured parameters * ARC: always destroy constructions like tuples, arrays properly, even in edge cases * fixes a regression
This commit is contained in:
parent
bab5351d43
commit
5278cf80eb
4 changed files with 72 additions and 16 deletions
|
|
@ -51,7 +51,26 @@ proc tleakingNewStmt =
|
|||
for i in 0..10:
|
||||
new(x)
|
||||
|
||||
iterator infinite(): int {.closure.} =
|
||||
var i = 0
|
||||
while true:
|
||||
yield i
|
||||
inc i
|
||||
|
||||
iterator take(it: iterator (): int, numToTake: int): int {.closure.} =
|
||||
var i = 0
|
||||
for x in it():
|
||||
if i >= numToTake:
|
||||
break
|
||||
yield x
|
||||
inc i
|
||||
|
||||
proc take3 =
|
||||
for x in infinite.take(3):
|
||||
discard
|
||||
|
||||
let startMem = getOccupiedMem()
|
||||
take3()
|
||||
tlazyList()
|
||||
|
||||
mkManyLeaks()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue