alien.destructors: ignore any output values from disposal word

db4
Slava Pestov 2009-03-28 22:26:49 -05:00
parent 602fe353e8
commit 84b5ace863
2 changed files with 6 additions and 2 deletions

View File

@ -1,6 +1,7 @@
! Copyright (C) 2009 Slava Pestov. ! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: functors destructors accessors kernel parser words ; USING: functors destructors accessors kernel parser words
combinators.smart ;
IN: alien.destructors IN: alien.destructors
SLOT: alien SLOT: alien
@ -18,7 +19,7 @@ TUPLE: F-destructor alien disposed ;
: <F-destructor> ( alien -- destructor ) f F-destructor boa ; inline : <F-destructor> ( alien -- destructor ) f F-destructor boa ; inline
M: F-destructor dispose* alien>> F ; M: F-destructor dispose* [ alien>> F ] drop-outputs ;
: &F ( alien -- alien ) dup <F-destructor> &dispose drop ; inline : &F ( alien -- alien ) dup <F-destructor> &dispose drop ; inline

View File

@ -4,6 +4,9 @@ USING: accessors fry generalizations kernel macros math.order
stack-checker math ; stack-checker math ;
IN: combinators.smart IN: combinators.smart
MACRO: drop-outputs ( quot -- quot' )
dup infer out>> '[ @ _ ndrop ] ;
MACRO: output>sequence ( quot exemplar -- newquot ) MACRO: output>sequence ( quot exemplar -- newquot )
[ dup infer out>> ] dip [ dup infer out>> ] dip
'[ @ _ _ nsequence ] ; '[ @ _ _ nsequence ] ;