summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-11-24 21:13:37 -0800
committerKaz Kylheku <kaz@kylheku.com>2016-11-24 21:13:37 -0800
commitc3624f86bdd117dc34d410939134407532c1cf01 (patch)
tree88432ac90bbca601fd52593ccb0a047309619083
parent9d1af9c86212124b71696c03617b679b7993819c (diff)
downloadtxr-c3624f86bdd117dc34d410939134407532c1cf01.tar.gz
txr-c3624f86bdd117dc34d410939134407532c1cf01.tar.bz2
txr-c3624f86bdd117dc34d410939134407532c1cf01.zip
bugfix: op macro using wrong expansions op.
* eval.c (me_op): When the operator is op, the arguments must be expanded as Lisp-1 with expand_forms_lisp1, not with the regular expand_forms.
-rw-r--r--eval.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 1114846b..4e617f9e 100644
--- a/eval.c
+++ b/eval.c
@@ -3116,7 +3116,9 @@ static val supplement_op_syms(val ssyms, val max)
static val me_op(val form, val menv)
{
cons_bind (sym, body, form);
- val body_ex = if3(sym == op_s, expand_forms(body, menv), expand(body, menv));
+ val body_ex = if3(sym == op_s,
+ expand_forms_lisp1(body, menv),
+ expand(body, menv));
val rest_gensym = gensym(lit("rest-"));
cons_bind (syms, body_trans, transform_op(body_ex, nil, rest_gensym));
val ssyms = sort(syms, func_n2(lt), car_f);