summary refs log tree commit diff stats
path: root/tests/destructor/tarc2.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/destructor/tarc2.nim')
-rw-r--r--tests/destructor/tarc2.nim31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/destructor/tarc2.nim b/tests/destructor/tarc2.nim
new file mode 100644
index 000000000..a7d7b4945
--- /dev/null
+++ b/tests/destructor/tarc2.nim
@@ -0,0 +1,31 @@
+discard """
+  output: '''leak: false'''
+  cmd: '''nim c --gc:orc $file'''
+"""
+
+type
+  T = ref object
+    s: seq[T]
+    data: string
+
+proc create(): T = T(s: @[], data: "abc")
+
+proc addX(x: T; data: string) =
+  x.data = data
+
+{.push sinkInference: off.}
+
+proc addX(x: T; child: T) =
+  x.s.add child
+
+{.pop.}
+
+proc main(rootName: string) =
+  var root = create()
+  root.data = rootName
+  root.addX root
+
+let mem = getOccupiedMem()
+main("yeah")
+GC_fullCollect()
+echo "leak: ", getOccupiedMem() - mem > 0