summary refs log tree commit diff stats
path: root/tests/destructor/tfinalizer.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/destructor/tfinalizer.nim')
-rw-r--r--tests/destructor/tfinalizer.nim31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/destructor/tfinalizer.nim b/tests/destructor/tfinalizer.nim
new file mode 100644
index 000000000..eb2cd09af
--- /dev/null
+++ b/tests/destructor/tfinalizer.nim
@@ -0,0 +1,31 @@
+discard """
+  cmd: "nim c --gc:arc $file"
+  output: '''Foo(field: "Dick Laurent", k: ka, x: 0.0)
+Nobody is dead
+Dick Laurent is dead'''
+"""
+
+type
+  Kind = enum
+    ka, kb
+  Foo = ref object
+    field: string
+    case k: Kind
+    of ka: x: float
+    of kb: discard
+
+#var x = Foo(field: "lovely")
+proc finalizer(x: Foo) =
+  echo x.field, " is dead"
+
+var x: Foo
+new(x, finalizer)
+x.field = "Dick Laurent"
+# reference to a great movie. If you haven't seen it, highly recommended.
+
+echo repr x
+
+# bug #13112: bind the same finalizer multiple times:
+var xx: Foo
+new(xx, finalizer)
+xx.field = "Nobody"