diff options
Diffstat (limited to 'tests/gc/weakrefs.nim')
-rw-r--r-- | tests/gc/weakrefs.nim | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/gc/weakrefs.nim b/tests/gc/weakrefs.nim index 3b12d7998..81c048d74 100644 --- a/tests/gc/weakrefs.nim +++ b/tests/gc/weakrefs.nim @@ -19,8 +19,15 @@ var proc finalizer(x: StrongObject) = valid.excl(x.id) +when defined(gcDestructors): + proc `=destroy`(x: var TMyObject) = + valid.excl(x.id) + proc create: StrongObject = - new(result, finalizer) + when defined(gcDestructors): + new(result) + else: + new(result, finalizer) result.id = gid valid.incl(gid) inc gid @@ -40,6 +47,8 @@ proc main = for i in 0 .. s.high: s[i] = register(create()) # test that we have at least 80% unreachable weak objects by now: + when defined(gcMarkAndSweep): + GC_fullcollect() var unreachable = 0 for i in 0 .. s.high: if access(s[i]) == nil: inc unreachable |