diff options
author | dos-reis <gdr@axiomatics.org> | 2011-12-03 21:20:44 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-12-03 21:20:44 +0000 |
commit | ec43e3cc2d75109541316df701d495f8a32c3800 (patch) | |
tree | c59066bd0edd2d6b3e2db88aa93b5e53d39a6f0e /src/interp/g-util.boot | |
parent | 58be7603436e7a9680c9d9eedef361c0c4e175d8 (diff) | |
download | open-axiom-ec43e3cc2d75109541316df701d495f8a32c3800.tar.gz |
* interp/compiler.boot: Use %seq in lieu of PROGN.
* interp/g-util.boot (spliceSeqArgs): New.
* interp/g-opt.boot (changeVariableDefinitionToStore): Call it
before recursing on %seq forms.
Diffstat (limited to 'src/interp/g-util.boot')
-rw-r--r-- | src/interp/g-util.boot | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/interp/g-util.boot b/src/interp/g-util.boot index c305a9bf..236076c0 100644 --- a/src/interp/g-util.boot +++ b/src/interp/g-util.boot @@ -45,6 +45,7 @@ module g_-util where usedSymbol?: (%Symbol,%Code) -> %Boolean isDefaultPackageName: %Symbol -> %Boolean makeDefaultPackageName: %String -> %Symbol + spliceSeqArgs: %List %Code -> %Code --% @@ -67,7 +68,20 @@ mkBind(inits,expr) == mkBind([:inits,:inits'],expr') ['%bind,inits,expr] - +++ We have a list `l' of expressions to be executed sequentially. +++ Splice in any directly-embedded sequence of expressions. +++ NOTES: This function should not be called on any program with +++ an %exit-form in it. In particular, it should be called +++ (if at all) before any call to simplifyVMForm. +spliceSeqArgs l == + atomic? l => l + l is [['%seq,:stmts],:.] => + stmts = nil => spliceSeqArgs rest l + lastNode(stmts).rest := spliceSeqArgs rest l + stmts + rest l = nil => l + l.rest := spliceSeqArgs rest l + l --% |