From 3e7368db7c823e747c791d9857a5e1f810b9afba Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 24 Mar 2017 06:27:15 -0700 Subject: Some basic tests for finalization. * tests/012/fini.tl: New file. * tests/012/fini.expected: New file. --- tests/012/fini.tl | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/012/fini.tl (limited to 'tests/012/fini.tl') 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) -- cgit v1.2.3