fuel.eval: fix

db4
Slava Pestov 2009-04-17 20:55:59 -05:00
parent 1b4e778102
commit c6072d7b4b
1 changed files with 12 additions and 11 deletions

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays compiler.units continuations debugger
fuel.pprint io io.streams.string kernel namespaces parser sequences
vectors vocabs.parser eval fry ;
vectors vocabs.parser ;
IN: fuel.eval
@ -21,7 +21,7 @@ SYMBOL: fuel-eval-res-flag
t fuel-eval-res-flag set-global
: fuel-eval-restartable? ( -- ? )
fuel-eval-res-flag get-global ; inline
fuel-eval-res-flag get-global ;
: fuel-push-status ( -- )
in get use get clone restarts get-global clone
@ -29,7 +29,7 @@ t fuel-eval-res-flag set-global
fuel-status-stack get push ;
: fuel-pop-restarts ( restarts -- )
fuel-eval-restartable? [ drop ] [ clone restarts set-global ] if ; inline
fuel-eval-restartable? [ drop ] [ clone restarts set-global ] if ;
: fuel-pop-status ( -- )
fuel-status-stack get empty? [
@ -39,24 +39,25 @@ t fuel-eval-res-flag set-global
[ restarts>> fuel-pop-restarts ] tri
] unless ;
: fuel-forget-error ( -- ) f error set-global ; inline
: fuel-forget-result ( -- ) f fuel-eval-result set-global ; inline
: fuel-forget-output ( -- ) f fuel-eval-output set-global ; inline
: fuel-forget-error ( -- ) f error set-global ;
: fuel-forget-result ( -- ) f fuel-eval-result set-global ;
: fuel-forget-output ( -- ) f fuel-eval-output set-global ;
: fuel-forget-status ( -- )
fuel-forget-error fuel-forget-result fuel-forget-output ; inline
fuel-forget-error fuel-forget-result fuel-forget-output ;
: fuel-send-retort ( -- )
error get fuel-eval-result get-global fuel-eval-output get-global
3array fuel-pprint flush nl "<~FUEL~>" write nl flush ;
: (fuel-begin-eval) ( -- )
fuel-push-status fuel-forget-status ; inline
fuel-push-status fuel-forget-status ;
: (fuel-end-eval) ( output -- )
fuel-eval-output set-global fuel-send-retort fuel-pop-status ; inline
fuel-eval-output set-global fuel-send-retort fuel-pop-status ;
: (fuel-eval) ( string -- )
'[ _ eval( -- ) ] try ;
: (fuel-eval) ( lines -- )
[ [ parse-lines ] with-compilation-unit call( -- ) ] curry
[ print-error ] recover ;
: (fuel-eval-each) ( lines -- )
[ (fuel-eval) ] each ;