diff options
Diffstat (limited to 'tests/destructor/tcycle2.nim')
-rw-r--r-- | tests/destructor/tcycle2.nim | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/destructor/tcycle2.nim b/tests/destructor/tcycle2.nim new file mode 100644 index 000000000..7b03101fe --- /dev/null +++ b/tests/destructor/tcycle2.nim @@ -0,0 +1,36 @@ +discard """ + output: "MEM 0" + cmd: "nim c --gc:orc $file" +""" + +type + Node = ref object + kids: seq[Node] + data: string + +proc main(x: int) = + var n = Node(kids: @[], data: "3" & $x) + let m = n + n.kids.add m + +type + NodeA = ref object + s: char + a: array[3, NodeA] + +proc m: NodeA = + result = NodeA(s: 'a') + result.a[0] = result + result.a[1] = result + result.a[2] = result + +proc mainA = + for i in 0..10: + discard m() + +let mem = getOccupiedMem() +main(90) +mainA() +GC_fullCollect() + +echo "MEM ", getOccupiedMem() - mem |