diff options
-rw-r--r-- | unwind.c | 22 | ||||
-rw-r--r-- | unwind.h | 1 |
2 files changed, 23 insertions, 0 deletions
@@ -793,6 +793,28 @@ val uw_errorfv(val fmt, struct args *args) abort(); } +val uw_warningf(val fmt, ...) +{ + va_list vl; + + val stream = make_string_output_stream(); + va_start (vl, fmt); + (void) vformat(stream, fmt, vl); + va_end (vl); + + uw_catch_begin (cons(continue_s, nil), exsym, exvals); + + uw_throw(warning_s, get_string_from_stream(stream)); + + uw_catch(exsym, exvals) { (void) exsym; (void) exvals; } + + uw_unwind; + + uw_catch_end; + + return nil; +} + val type_mismatch(val fmt, ...) { va_list vl; @@ -154,6 +154,7 @@ noreturn val uw_throwf(val sym, val fmt, ...); noreturn val uw_throwfv(val sym, val fmt, struct args *); noreturn val uw_errorf(val fmt, ...); noreturn val uw_errorfv(val fmt, struct args *args); +val uw_warningf(val fmt, ...); val uw_defer_warning(val args); val uw_warning_exists(val tag); val uw_dump_deferred_warnings(val stream); |