aboutsummaryrefslogtreecommitdiff
path: root/src/interp/lisp-backend.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/lisp-backend.boot')
-rw-r--r--src/interp/lisp-backend.boot9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/interp/lisp-backend.boot b/src/interp/lisp-backend.boot
index 2c801bed..e145828c 100644
--- a/src/interp/lisp-backend.boot
+++ b/src/interp/lisp-backend.boot
@@ -219,10 +219,13 @@ hasNoExit? x ==
++ normal lexical exit.
expandSeq(x is ['%seq,:stmts]) ==
[:stmts',val] := stmts
- and/[hasNoExit? s for s in stmts'] and
- val is ['%exit,val'] and hasNoExit? val' =>
+ val is ['%exit,val'] and hasNoExit? val' and
+ (and/[hasNoExit? s for s in stmts']) =>
['PROGN,:[expandToVMForm s for s in stmts'],expandToVMForm val']
- ['SEQ,:[expandToVMForm s for s in stmts]]
+ op :=
+ and/[hasNoExit? s for s in stmts] => 'PROGN
+ 'SEQ
+ [op,:[expandToVMForm s for s in stmts]]
-- Pointer operations
expandPeq ['%peq,x,y] ==