summary refs log tree commit diff stats
path: root/tests/destructor/tcycle2.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/destructor/tcycle2.nim')
-rw-r--r--tests/destructor/tcycle2.nim36
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