diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/ChangeLog | 5 | ||||
-rw-r--r-- | src/interp/c-util.boot | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/interp/ChangeLog b/src/interp/ChangeLog index 84afa26c..81b92178 100644 --- a/src/interp/ChangeLog +++ b/src/interp/ChangeLog @@ -1,3 +1,8 @@ +2007-12-13 Gabriel Dos Reis <gdr@cs.tamu.edu> + + * c-util.boot (isAlmostSimple): A `case' expresion with a simple + identified as first operand is a simple-expression. + 2007-12-12 Gabriel Dos Reis <gdr@cs.tamu.edu> * parse.boot: Register parsers by name, not by pointers. diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot index d5b8492e..05a65bb7 100644 --- a/src/interp/c-util.boot +++ b/src/interp/c-util.boot @@ -382,6 +382,7 @@ isAlmostSimple x == op="LET" => IDENTP y => (setAssignment LIST x; y) (setAssignment [["LET",g:= genVariable(),:l],["LET",y,g]]; g) + op = "case" and IDENTP y => x isSideEffectFree op => [op,:mapInto(rest x, function fn)] $assignmentList:= "failed" setAssignment x == |