summary refs log tree commit diff stats
path: root/tests/gc/closureleak.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-11-25 15:29:41 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-11-26 16:04:28 +0100
commit72237e2bcfc371d917e4e14b22a3c447289ea39f (patch)
tree25922b2b6dc02898657ec9d6399b6c7938e8eb92 /tests/gc/closureleak.nim
parent879801c63980287070f64d94e4c4f7aeb28cb2f4 (diff)
downloadNim-72237e2bcfc371d917e4e14b22a3c447289ea39f.tar.gz
ARC: ported the GC tests over to --gc:arc
Diffstat (limited to 'tests/gc/closureleak.nim')
-rw-r--r--tests/gc/closureleak.nim22
1 files changed, 15 insertions, 7 deletions
diff --git a/tests/gc/closureleak.nim b/tests/gc/closureleak.nim
index f86a936d8..508004a53 100644
--- a/tests/gc/closureleak.nim
+++ b/tests/gc/closureleak.nim
@@ -3,20 +3,28 @@ discard """
   disabled: "32bit"
 """
 
-from strutils import join
-
 type
-  TFoo * = object
+  TFoo* = object
     id: int
     fn: proc(){.closure.}
 var foo_counter = 0
 var alive_foos = newseq[int](0)
 
-proc free*(some: ref TFoo) =
-  #echo "Tfoo #", some.id, " freed"
-  alive_foos.del alive_foos.find(some.id)
+when defined(gcDestructors):
+  proc `=destroy`(some: var TFoo) =
+    alive_foos.del alive_foos.find(some.id)
+    `=destroy`(some.fn)
+
+else:
+  proc free*(some: ref TFoo) =
+    #echo "Tfoo #", some.id, " freed"
+    alive_foos.del alive_foos.find(some.id)
+
 proc newFoo*(): ref TFoo =
-  new result, free
+  when defined(gcDestructors):
+    new result
+  else:
+    new result, free
 
   result.id = foo_counter
   alive_foos.add result.id