diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-11-28 22:34:39 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-11-28 22:34:39 -0800 |
commit | 8417226897c20af924807ae2804d6d0749941d6f (patch) | |
tree | 407cdad7dd8778ceb75bc57202e297ad5aaf3332 | |
parent | c5a734db255b4e7102a7e321720c54762c060f3e (diff) | |
download | txr-8417226897c20af924807ae2804d6d0749941d6f.tar.gz txr-8417226897c20af924807ae2804d6d0749941d6f.tar.bz2 txr-8417226897c20af924807ae2804d6d0749941d6f.zip |
bugfix: awk macro spews warnings.
Rather than fix this in the awk macro, let's
just have sys:expand block warnings.
* eval.c (warning_continue, no_warn_expand): New static
function.
(eval_init): Change registration of sys:expand to point
to no_warn_expand.
* share/txr/stdlib/place.tl (call-update-expander,
call-clobber-expander, call-delete-expander, sys:placelet-1):
Remove ignwarn wrapping from sys:expand calls.
-rw-r--r-- | eval.c | 17 | ||||
-rw-r--r-- | share/txr/stdlib/place.tl | 13 |
2 files changed, 21 insertions, 9 deletions
@@ -3929,6 +3929,21 @@ val expand(val form, val menv) return ret; } +static val warning_continue(val exc, val arg) +{ + uw_throw(continue_s, nil); +} + +static val no_warn_expand(val form, val menv) +{ + val ret; + uw_frame_t uw_handler; + uw_push_handler(&uw_handler, cons(warning_s, nil), func_n2(warning_continue)); + ret = expand(form, menv); + uw_pop_frame(&uw_handler); + return ret; +} + val macro_form_p(val form, val menv) { menv = default_bool_arg(menv); @@ -5315,7 +5330,7 @@ void eval_init(void) reg_fun(intern(lit("load"), user_package), func_n1(load)); reg_var(load_path_s, nil); reg_symacro(intern(lit("self-load-path"), user_package), load_path_s); - reg_fun(intern(lit("expand"), system_package), func_n2o(expand, 1)); + reg_fun(intern(lit("expand"), system_package), func_n2o(no_warn_expand, 1)); reg_fun(intern(lit("macro-form-p"), user_package), func_n2o(macro_form_p, 1)); reg_fun(intern(lit("macroexpand-1"), user_package), func_n2o(macroexpand_1, 1)); diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl index 76ca95e2..7bd9acf5 100644 --- a/share/txr/stdlib/place.tl +++ b/share/txr/stdlib/place.tl @@ -183,7 +183,7 @@ (expander (get-update-expander place)) (sys:*pl-env* env) (expansion [expander getter setter place body]) - (expansion-ex (ignwarn (sys:expand expansion env)))) + (expansion-ex (sys:expand expansion env))) (sys:cp-origin expansion-ex place))) (defun call-clobber-expander (ssetter unex-place env body) @@ -191,7 +191,7 @@ (expander (get-clobber-expander place)) (sys:*pl-env* env) (expansion [expander ssetter place body]) - (expansion-ex (ignwarn (sys:expand expansion env)))) + (expansion-ex (sys:expand expansion env))) (sys:cp-origin expansion-ex place))) (defun call-delete-expander (deleter unex-place env body) @@ -199,7 +199,7 @@ (expander (get-delete-expander place)) (sys:*pl-env* env) (expansion [expander deleter place body]) - (expansion-ex (ignwarn (sys:expand expansion env)))) + (expansion-ex (sys:expand expansion env))) (sys:cp-origin expansion-ex place)))) (defmacro with-update-expander ((getter setter) unex-place env body) @@ -885,11 +885,8 @@ ,tmp-body))) (call-update-expander pl-getter pl-setter place env ^(macrolet ((,tmp-place () ^(,',pl-getter))) - ,(ignwarn - (sys:expand - ^(symacrolet ((,sym (,tmp-place))) - ,*body) - env))))) + ,(sys:expand ^(symacrolet ((,sym (,tmp-place))) + ,*body) env)))) (remhash *place-update-expander* tmp-place)))) (defmacro placelet* (sym-place-pairs . body) |