aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-02-07 02:43:13 +0000
committerdos-reis <gdr@axiomatics.org>2011-02-07 02:43:13 +0000
commit64800be179812d1ff863cc629bcc6b21a0c7f8ac (patch)
tree58c035aec699d3a0b633e751835df24510510765 /src/interp
parent351022a3ec02f6e131d54f3a5bcb27a8dfffbcb0 (diff)
downloadopen-axiom-64800be179812d1ff863cc629bcc6b21a0c7f8ac.tar.gz
* interp/g-opt.boot (groupVariableDefinitions): Look into clauses
of conditional too.
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/g-opt.boot5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index f29ef062..15bb906d 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -95,6 +95,11 @@ singleAssignment? form ==
++ a sequence of first-time variable definitions.
groupVariableDefinitions form ==
atomic? form => form
+ form.op is '%when =>
+ -- FIXME: we should not be generating store-modifying predicates
+ for clause in form.args while not CONTAINED('%LET, first clause) repeat
+ second(clause) := groupVariableDefinitions second clause
+ form
form isnt ['SEQ,:stmts,['EXIT,val]] => form
defs := nil
for x in stmts while singleAssignment? x repeat