summary refs log tree commit diff stats
path: root/tests/arc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/arc')
-rw-r--r--tests/arc/tarcmisc.nim29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/arc/tarcmisc.nim b/tests/arc/tarcmisc.nim
new file mode 100644
index 000000000..9662ecf7f
--- /dev/null
+++ b/tests/arc/tarcmisc.nim
@@ -0,0 +1,29 @@
+discard """
+  output: '''
+destroyed: false
+destroyed: false
+destroying variable'''
+  cmd: "nim c --gc:arc $file"
+"""
+
+# bug #13691
+type Variable = ref object
+  value: int
+
+proc `=destroy`(self: var typeof(Variable()[])) =
+  echo "destroying variable"
+
+proc newVariable(value: int): Variable =
+  result = Variable()
+  result.value = value
+
+proc test(count: int) =
+  var v {.global.} = newVariable(10)
+
+  var count = count - 1
+  if count == 0: return
+
+  test(count)
+  echo "destroyed: ", v.isNil
+
+test(3)