diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/interp/parse.boot | 2 |
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]] |