discard """ file: "tclosure3.nim" output: "success" """ proc main = const n = 30 for iterations in 0..50_000: var s: seq[proc(): string {.closure.}] = @[] for i in 0 .. n-1: (proc () = let ii = i s.add(proc(): string = return $(ii*ii)))() for i in 0 .. n-1: let val = s[i]() if val != $(i*i): echo "bug ", val if getOccupiedMem() > 3000_000: quit("still a leak!") echo "success" main()