summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--place.tl4
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index ff8c5c45..a3616aae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2015-05-12 Kaz Kylheku <kaz@kylheku.com>
+ * place.tl (rlet): For the sake of sane evaluation order
+ in the face of unknown side effects, do not thread symbolic references;
+ only propagate constants.
+
+2015-05-12 Kaz Kylheku <kaz@kylheku.com>
+
* eval.c (env_vb_to_fb): Allow null env argument. This
case occurs when (flet () ...) is expanded.
diff --git a/place.tl b/place.tl
index 6003fa30..ffa37a66 100644
--- a/place.tl
+++ b/place.tl
@@ -96,8 +96,8 @@
(defmacro rlet (bindings :env e . body)
(let ((exp-bindings (mapcar (aret ^(,@1 ,(macroexpand @2 e))) bindings)))
- (let ((renames [keep-if [orf symbolp constantp] exp-bindings second])
- (regular [remove-if [orf symbolp constantp] exp-bindings second]))
+ (let ((renames [keep-if constantp exp-bindings second])
+ (regular [remove-if constantp exp-bindings second]))
(cond ((and renames regular)
^(symacrolet ,renames
(let ,regular ,*body)))