summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-11-28 22:34:39 -0800
committerKaz Kylheku <kaz@kylheku.com>2016-11-28 22:34:39 -0800
commit8417226897c20af924807ae2804d6d0749941d6f (patch)
tree407cdad7dd8778ceb75bc57202e297ad5aaf3332 /eval.c
parentc5a734db255b4e7102a7e321720c54762c060f3e (diff)
downloadtxr-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.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 8b56cbda..d1396f4c 100644
--- a/eval.c
+++ b/eval.c
@@ -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));