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
commit871094e9ed8d9f737428f43283844d2c428e70fe (patch)
treed93252fdaeb9ad1de5021c2942d4f94642e210f3
parent99a798c02d009398d4b883b2e0b4fa2181553f61 (diff)
downloadtxr-871094e9ed8d9f737428f43283844d2c428e70fe.tar.gz
txr-871094e9ed8d9f737428f43283844d2c428e70fe.tar.bz2
txr-871094e9ed8d9f737428f43283844d2c428e70fe.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))