Files
Nim/tests/gc/closureleak.nim
Adam Strzelecki e80465dacf tests: Trim .nim files trailing whitespace
via OSX: find . -name '*.nim' -exec sed -i '' -E 's/[[:space:]]+$//' {} +
2015-09-04 23:04:32 +02:00

34 lines
553 B
Nim

discard """
outputsub: "true"
"""
from strutils import join
type
TFoo * = object
id: int
fn: proc(){.closure.}
var foo_counter = 0
var alive_foos = newseq[int](0)
proc free*(some: ref TFoo) =
#echo "Tfoo #", some.id, " freed"
alive_foos.del alive_foos.find(some.id)
proc newFoo*(): ref TFoo =
new result, free
result.id = foo_counter
alive_foos.add result.id
inc foo_counter
for i in 0 .. <10:
discard newFoo()
for i in 0 .. <10:
let f = newFoo()
f.fn = proc =
echo f.id
GC_fullcollect()
echo alive_foos.len <= 3