From 584838f8c9060fa65ffbee7c7ba4aa8685c46b6f Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 23 Jan 2014 06:27:05 -0800 Subject: * eval.c (do_eval): Fix incorrect, recently introduced code rearrangement that gives precedence to operator lookup over function lookup. --- ChangeLog | 6 ++++++ eval.c | 20 ++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index f7047987..7b9b1b53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-01-23 Kaz Kylheku + + * eval.c (do_eval): Fix incorrect, recently introduced code + rearrangement that gives precedence to operator lookup over function + lookup. + 2014-01-23 Kaz Kylheku Bugfix: @(require ...) not expanding forms. diff --git a/eval.c b/eval.c index 3de5e7b8..63c56a62 100644 --- a/eval.c +++ b/eval.c @@ -466,19 +466,19 @@ static val do_eval(val form, val env, val ctx_form, val entry = gethash(op_table, oper); if (entry) { - if (!entry) { + opfun_t fp = (opfun_t) cptr_get(entry); + debug_return (fp(form, env)); + } else { + val fbinding = lookup_fun(env, oper); + if (!fbinding) { eval_error(form, lit("no such function or operator: ~s"), oper, nao); abort(); - } else { - opfun_t fp = (opfun_t) cptr_get(entry); - debug_return (fp(form, env)); + } else { + val args = do_eval_args(rest(form), env, form, lookup); + debug_frame(oper, args, nil, env, nil, nil, nil); + debug_return (apply(cdr(fbinding), args, form)); + debug_end; } - } else { - val fbinding = lookup_fun(env, oper); - val args = do_eval_args(rest(form), env, form, lookup); - debug_frame(oper, args, nil, env, nil, nil, nil); - debug_return (apply(cdr(fbinding), args, form)); - debug_end; } } } else { -- cgit v1.2.3