1 USING: accessors continuations destructors destructors.private
2 kernel namespaces sequences tools.test ;
7 M: dispose-error dispose 3 throw ;
9 TUPLE: dispose-dummy disposed? ;
11 M: dispose-dummy dispose t >>disposed? drop ;
13 T{ dispose-error } "a" set
14 T{ dispose-dummy } "b" set
16 { f } [ "b" get disposed?>> ] unit-test
18 [ { "a" "b" } [ get ] map dispose-each ] [ 3 = ] must-fail-with
20 { t } [ "b" get disposed?>> ] unit-test
22 TUPLE: dummy-obj destroyed? ;
24 : <dummy-obj> ( -- obj ) dummy-obj new ;
26 TUPLE: dummy-destructor obj ;
28 C: <dummy-destructor> dummy-destructor
30 M: dummy-destructor dispose ( obj -- )
31 obj>> t >>destroyed? drop ;
33 : destroy-always ( obj -- )
34 <dummy-destructor> &dispose drop ;
36 : destroy-later ( obj -- )
37 <dummy-destructor> |dispose drop ;
41 <dummy-obj> dup destroy-always
42 ] with-destructors destroyed?>>
47 <dummy-obj> dup destroy-later
48 ] with-destructors destroyed?>>
57 ] ignore-errors destroyed?>>
66 ] ignore-errors destroyed?>>
69 TUPLE: silly-disposable < disposable ;
71 M: silly-disposable dispose* drop ;
73 silly-disposable new-disposable "s" set
75 [ "s" get unregister-disposable ]
76 [ disposable>> silly-disposable? ]