summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-03-02 21:37:48 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-03-02 22:01:12 -0800
commit7807b9cc097e9356217e3071ad1310191dda58fe (patch)
treebfe3b467c621efb51ae713c6df3c4ebf60f51d7a
parentdf5d69a59ff5af28a66cec7ca0e88ec0b67f4ab4 (diff)
downloadtxr-7807b9cc097e9356217e3071ad1310191dda58fe.tar.gz
txr-7807b9cc097e9356217e3071ad1310191dda58fe.tar.bz2
txr-7807b9cc097e9356217e3071ad1310191dda58fe.zip
* eval.c (expand): Bugfix. When processing a defvar, should mark
the variable as special at expansion time. Without this, binding forms in other parts of the tree won't be expanded properly to bring about the special semantics.
-rw-r--r--ChangeLog7
-rw-r--r--eval.c2
2 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a4e1327..34709343 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2014-03-02 Kaz Kylheku <kaz@kylheku.com>
+ * eval.c (expand): Bugfix. When processing a defvar, should mark
+ the variable as special at expansion time. Without this, binding
+ forms in other parts of the tree won't be expanded properly
+ to bring about the special semantics.
+
+2014-03-02 Kaz Kylheku <kaz@kylheku.com>
+
* parser.y (unquotes_occur): Fix use of unquote_s rather than sys_unquote_s
which breaks backquote, caught by tests/010/reghash.txr.
I thought fixed this already! But I must have made the change to y.tab.c
diff --git a/eval.c b/eval.c
index e718853a..be60544b 100644
--- a/eval.c
+++ b/eval.c
@@ -2409,6 +2409,8 @@ tail:
if (sym == defsymacro_s) {
val result = eval(form_ex, make_env(nil, nil, nil), form);
return cons(quote_s, cons(result, nil));
+ } else {
+ mark_special(name);
}
return form_ex;