diff options
Diffstat (limited to 'tests/gc/cyclecollector.nim')
-rw-r--r-- | tests/gc/cyclecollector.nim | 23 |
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() |