aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/interp/ChangeLog5
-rw-r--r--src/interp/c-util.boot1
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 ==