diff options
-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) |