summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eval.c2
-rw-r--r--unwind.c8
-rw-r--r--unwind.h1
3 files changed, 10 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index ca4bed57..24d545e9 100644
--- a/eval.c
+++ b/eval.c
@@ -4260,7 +4260,7 @@ 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_n1v(uw_muffle_warning));
+ func_n1v(uw_muffle_deferrable_warning));
ret = expand(form, menv);
uw_pop_frame(&uw_handler);
return ret;
diff --git a/unwind.c b/unwind.c
index 742cb781..e3f661ca 100644
--- a/unwind.c
+++ b/unwind.c
@@ -428,6 +428,14 @@ val uw_muffle_warning(val exc, struct args *args)
uw_throw(continue_s, nil);
}
+val uw_muffle_deferrable_warning(val exc, struct args *args)
+{
+ (void) exc;
+ if (args_count(args) == 2)
+ uw_throw(continue_s, nil);
+ return nil;
+}
+
void uw_push_cont_copy(uw_frame_t *fr, mem_t *ptr,
void (*copy)(mem_t *ptr, int parent))
{
diff --git a/unwind.h b/unwind.h
index 1301f2e7..30da0146 100644
--- a/unwind.h
+++ b/unwind.h
@@ -150,6 +150,7 @@ val uw_find_frame(val extype, val frtype);
val uw_find_frames(val extype, val frtype);
val uw_invoke_catch(val catch_frame, val sym, struct args *);
val uw_muffle_warning(val exc, struct args *);
+val uw_muffle_deferrable_warning(val exc, struct args *);
val uw_capture_cont(val tag, val fun, val ctx_form);
void uw_push_cont_copy(uw_frame_t *, mem_t *ptr,
void (*copy)(mem_t *ptr, int parent));