mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
34 lines
553 B
Nim
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
|