summary refs log tree commit diff stats
path: root/tests/gc/weakrefs.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gc/weakrefs.nim')
-rw-r--r--tests/gc/weakrefs.nim11
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