2007-10-06 13:37:11 -04:00
|
|
|
USING: destructors kernel tools.test continuations ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: temporary
|
|
|
|
|
|
|
|
TUPLE: dummy-obj destroyed? ;
|
|
|
|
|
2007-10-15 16:01:55 -04:00
|
|
|
TUPLE: dummy-destructor ;
|
|
|
|
|
|
|
|
: <dummy-destructor> ( obj ? -- newobj )
|
|
|
|
<destructor> dummy-destructor construct-delegate ;
|
|
|
|
|
|
|
|
M: dummy-destructor (destruct) ( obj -- )
|
|
|
|
destructor-obj t swap set-dummy-obj-destroyed? ;
|
|
|
|
|
2007-09-20 18:09:08 -04:00
|
|
|
: <dummy-obj>
|
|
|
|
\ dummy-obj construct-empty ;
|
|
|
|
|
2007-10-15 16:01:55 -04:00
|
|
|
: destroy-always
|
|
|
|
t <dummy-destructor> push-destructor ;
|
|
|
|
|
|
|
|
: destroy-later
|
|
|
|
f <dummy-destructor> push-destructor ;
|
|
|
|
|
2007-09-20 18:09:08 -04:00
|
|
|
[ t ] [
|
|
|
|
[
|
2007-10-15 16:01:55 -04:00
|
|
|
<dummy-obj> dup destroy-always
|
2007-09-20 18:09:08 -04:00
|
|
|
] with-destructors dummy-obj-destroyed?
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
[ f ] [
|
|
|
|
[
|
2007-10-15 16:01:55 -04:00
|
|
|
<dummy-obj> dup destroy-later
|
2007-09-20 18:09:08 -04:00
|
|
|
] with-destructors dummy-obj-destroyed?
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
[ t ] [
|
|
|
|
<dummy-obj> [
|
|
|
|
[
|
2007-10-15 16:01:55 -04:00
|
|
|
dup destroy-always
|
2007-09-20 18:09:08 -04:00
|
|
|
"foo" throw
|
|
|
|
] with-destructors
|
|
|
|
] catch drop dummy-obj-destroyed?
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
[ t ] [
|
|
|
|
<dummy-obj> [
|
|
|
|
[
|
2007-10-15 16:01:55 -04:00
|
|
|
dup destroy-later
|
2007-09-20 18:09:08 -04:00
|
|
|
"foo" throw
|
|
|
|
] with-destructors
|
|
|
|
] catch drop dummy-obj-destroyed?
|
|
|
|
] unit-test
|
|
|
|
|