summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-05-21 19:56:47 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-05-21 19:56:47 -0700
commitf94a7a41c6deb13f1db805842dcede803102bfc5 (patch)
treed93252fdaeb9ad1de5021c2942d4f94642e210f3
parent10978d2ec2a6abc92a94ef73fe892b93afddda7f (diff)
downloadtxr-f94a7a41c6deb13f1db805842dcede803102bfc5.tar.gz
txr-f94a7a41c6deb13f1db805842dcede803102bfc5.tar.bz2
txr-f94a7a41c6deb13f1db805842dcede803102bfc5.zip
eval: bugfix: expand keys in case{q,ql,qual}*
* eval.c (me_case): When we evaluate the keys of a caseq, caseql* or casequal* construct, we must use expand_eval. I ran into this problem trying to use constants defined as symbol macros as keys.
-rw-r--r--eval.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/eval.c b/eval.c
index 0f6600c6..15454da8 100644
--- a/eval.c
+++ b/eval.c
@@ -4088,9 +4088,9 @@ static val me_case(val form, val menv)
if (star) {
if (atom(keys))
- hash_keys = cons(keys = eval(keys, nil, form), nil);
+ hash_keys = cons(keys = expand_eval(keys, nil, menv), nil);
else
- hash_keys = keys = eval(cons(list_s, keys), nil, form);
+ hash_keys = keys = expand_eval(cons(list_s, keys), nil, menv);
}
if (consp(keys) && !cdr(keys))