summary refs log tree commit diff stats
path: root/tests/gc/cyclecollector.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gc/cyclecollector.nim')
-rw-r--r--tests/gc/cyclecollector.nim23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/gc/cyclecollector.nim b/tests/gc/cyclecollector.nim
new file mode 100644
index 000000000..2d02a7a3c
--- /dev/null
+++ b/tests/gc/cyclecollector.nim
@@ -0,0 +1,23 @@
+
+# Program to detect bug #1796 reliably
+
+type
+  Node = ref object
+    a, b: Node
+    leaf: string
+
+proc createCycle(leaf: string): Node =
+  new result
+  result.a = result
+  when defined(gcArc) or defined(gcOrc):
+    result.leaf = leaf
+  else:
+    shallowCopy result.leaf, leaf
+
+proc main =
+  for i in 0 .. 100_000:
+    var leaf = "this is the leaf. it allocates"
+    let x = createCycle(leaf)
+    let y = createCycle(leaf)
+
+main()