summaryrefslogtreecommitdiffstats
path: root/tests/012/fini.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-03-24 06:27:15 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-03-24 06:27:15 -0700
commit3e7368db7c823e747c791d9857a5e1f810b9afba (patch)
treee3ad5cec0a9978773730fd70f6f4037aef27aa57 /tests/012/fini.tl
parent3f089edac96f9c0f37aa36b3ed3bc2ecc9b85ffa (diff)
downloadtxr-3e7368db7c823e747c791d9857a5e1f810b9afba.tar.gz
txr-3e7368db7c823e747c791d9857a5e1f810b9afba.tar.bz2
txr-3e7368db7c823e747c791d9857a5e1f810b9afba.zip
Some basic tests for finalization.
* tests/012/fini.tl: New file. * tests/012/fini.expected: New file.
Diffstat (limited to 'tests/012/fini.tl')
-rw-r--r--tests/012/fini.tl22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/012/fini.tl b/tests/012/fini.tl
new file mode 100644
index 00000000..3aa581f9
--- /dev/null
+++ b/tests/012/fini.tl
@@ -0,0 +1,22 @@
+(load "../common")
+
+(defstruct base nil
+ others
+ id
+ (:static counter 0)
+ (:postinit (me) (set me.id (inc me.counter)))
+ (:fini (me)
+ (put-line `@(typeof me):@{me.id} finalized`)
+ [mapdo call-finalizers me.others]))
+
+(defstruct derived base
+ (:fini (me)
+ (put-line `@(typeof me):@{me.id} derived fini`)))
+
+(unwind-protect
+ (with-objects ((b (new base others (mapcar (ret (new derived)) (range 1 20)))))
+ (put-line "inside with-objects"))
+ (put-line "after with-objects"))
+
+(mapcar (ret (new derived)) (range 1 20))
+(sys:gc)