diff options
author | Araq <rumpf_a@web.de> | 2019-11-25 15:29:41 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-11-26 16:04:28 +0100 |
commit | 72237e2bcfc371d917e4e14b22a3c447289ea39f (patch) | |
tree | 25922b2b6dc02898657ec9d6399b6c7938e8eb92 /tests/gc/closureleak.nim | |
parent | 879801c63980287070f64d94e4c4f7aeb28cb2f4 (diff) | |
download | Nim-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.nim | 22 |
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 |