aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/interp/parse.boot2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 38b6a04e..dd5588ec 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-20 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/parse.boot (transSeq): Aggregate branches of toplevel
+ conditionals so that implications propagate down the pipe.
+
2011-02-15 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/compiler.boot (coerceExtraHard): Explicitly fail if
diff --git a/src/interp/parse.boot b/src/interp/parse.boot
index 5d2974c3..9a66be2b 100644
--- a/src/interp/parse.boot
+++ b/src/interp/parse.boot
@@ -390,6 +390,8 @@ transSeq l ==
["IF",decExitLevel a,decExitLevel b,transSeq tail]
item is ["IF",a,"%noBranch",["exit",1,b]] =>
["IF",decExitLevel a,transSeq tail,decExitLevel b]
+ item is ["IF",a,["exit",1,b],c] =>
+ ["IF",decExitLevel a,decExitLevel b,transSeq [c,:tail]]
(y:= transSeq tail) is ["SEQ",:s] => ["SEQ",item,:s]
["SEQ",item,["exit",1,incExitLevel y]]