aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
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