diff options
-rw-r--r-- | eval.c | 30 |
1 files changed, 16 insertions, 14 deletions
@@ -5458,20 +5458,7 @@ again: val insym = first(form_ex); val insym_ex = insym; val args = rest(form_ex); - val args_ex = expand_forms(args, menv); - - if (sym == setq_s) { - syn_check(form, sym, cddr, cdddr); - - { - val target = car(args_ex); - - if (!consp(target) || car(target) != var_s) { - if (!bindable(target)) - not_bindable_warning(form, car(args_ex)); - } - } - } + val args_ex; if (sym == return_s) syn_check(form, sym, identity, cddr); @@ -5508,6 +5495,21 @@ again: } } + args_ex = expand_forms(args, menv); + + if (sym == setq_s) { + syn_check(form, sym, cddr, cdddr); + + { + val target = car(args_ex); + + if (!consp(target) || car(target) != var_s) { + if (!bindable(target)) + not_bindable_warning(form, car(args_ex)); + } + } + } + if (insym_ex == rcons_s && proper_list_p(args_ex) && length(args_ex) == two && constantp_noex(car(args_ex)) && |