summary refs log tree commit diff stats
path: root/tests/destructor/trecursive.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/destructor/trecursive.nim')
-rw-r--r--tests/destructor/trecursive.nim26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/destructor/trecursive.nim b/tests/destructor/trecursive.nim
index 55e67f52a..e7afa6ba9 100644
--- a/tests/destructor/trecursive.nim
+++ b/tests/destructor/trecursive.nim
@@ -32,3 +32,29 @@ proc test1() =
   echo "test1 OK"
 
 test1()
+
+#------------------------------------------------------------------------------
+# issue #14217
+
+type
+  MyObject = object
+    p: ptr int
+
+proc `=destroy`(x: var MyObject) =
+  if x.p != nil:
+    deallocShared(x.p)
+
+proc `=`(x: var MyObject, y: MyObject) {.error.}
+
+proc newMyObject(i: int): MyObject = 
+  result.p = createShared(int)
+  result.p[] = i
+
+proc test: seq[MyObject] = 
+  for i in 0..3:
+    let x = newMyObject(i)
+    result.add x
+
+var x = test()
+for i in 0..3:
+  doAssert(x[i].p[] == i)