diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-03-24 06:27:15 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-03-24 06:27:15 -0700 |
commit | 3e7368db7c823e747c791d9857a5e1f810b9afba (patch) | |
tree | e3ad5cec0a9978773730fd70f6f4037aef27aa57 /tests/012/fini.tl | |
parent | 3f089edac96f9c0f37aa36b3ed3bc2ecc9b85ffa (diff) | |
download | txr-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.tl | 22 |
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) |