summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-05-12 07:44:58 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-05-12 07:44:58 -0700
commitff0f81fcf1062e17a9b9f1967bac85f6dfc16a90 (patch)
tree652e2b24c9212533a877eafba1913caabc1ed942
parentc9ad2400fa6e484951a1caedacfcae1175506a40 (diff)
downloadtxr-ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90.tar.gz
txr-ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90.tar.bz2
txr-ff0f81fcf1062e17a9b9f1967bac85f6dfc16a90.zip
* 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.
-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)))