diff --git a/basis/alien/marshall/syntax/syntax.factor b/basis/alien/marshall/syntax/syntax.factor index 935aec87f9..321ca59023 100644 --- a/basis/alien/marshall/syntax/syntax.factor +++ b/basis/alien/marshall/syntax/syntax.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2009 Jeremy Hughes. ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien.inline alien.inline.types alien.marshall -combinators effects generalizations kernel locals namespaces +combinators effects generalizations kernel locals make namespaces quotations sequences words ; IN: alien.marshall.syntax @@ -11,10 +11,14 @@ IN: alien.marshall.syntax [ out>> types [ pointer-to-primitive? ] filter append ] bi [ - types [ marshaller ] map \ spread rot - types length \ nkeep - types [ out-arg-unmarshaller ] map \ spread - 7 narray >quotation + [ + types [ marshaller ] map , \ spread , , + types length , \ nkeep , + types [ out-arg-unmarshaller ] map + effect out>> dup empty? + [ drop ] [ first unmarshaller prefix ] if + , \ spread , + ] [ ] make ] dip ; : define-c-marshalled ( function types effect -- )