diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-11-24 21:13:37 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-11-24 21:13:37 -0800 |
commit | c3624f86bdd117dc34d410939134407532c1cf01 (patch) | |
tree | 88432ac90bbca601fd52593ccb0a047309619083 | |
parent | 9d1af9c86212124b71696c03617b679b7993819c (diff) | |
download | txr-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.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -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); |