MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

revise thrown error for pipes

+28 -12
+2
include/errors.h
··· 50 50 51 51 __attribute__((format(printf, 4, 5))) 52 52 ant_value_t js_create_error(ant_t *js, js_err_type_t err_type, ant_value_t props, const char *fmt, ...); 53 + ant_value_t js_make_error_silent(ant_t *js, js_err_type_t err_type, const char *message); 54 + 53 55 ant_value_t js_capture_raw_stack(ant_t *js); 54 56 ant_value_t js_throw(ant_t *js, ant_value_t value); 55 57
+16
src/errors.c
··· 804 804 return mkval(T_ERR, vdata(err_obj)); 805 805 } 806 806 807 + ant_value_t js_make_error_silent(ant_t *js, js_err_type_t err_type, const char *message) { 808 + bool had_throw = js->thrown_exists; 809 + 810 + ant_value_t saved_value = had_throw ? js->thrown_value : js_mkundef(); 811 + ant_value_t saved_stack = had_throw ? js->thrown_stack : js_mkundef(); 812 + 813 + js_create_error(js, err_type, js_mkundef(), "%s", message); 814 + ant_value_t err = js->thrown_value; 815 + 816 + js->thrown_exists = had_throw; 817 + js->thrown_value = saved_value; 818 + js->thrown_stack = saved_stack; 819 + 820 + return err; 821 + } 822 + 807 823 ant_value_t js_throw(ant_t *js, ant_value_t value) { 808 824 if (vtype(value) == T_OBJ) { 809 825 ant_value_t existing = js_get(js, value, "stack");
+6 -6
src/streams/pipes.c
··· 79 79 if (!is_object_type(stream_obj)) return; 80 80 81 81 if (rs_reader_has_reqs(js, reader_obj)) { 82 - js_mkerr_typed(js, JS_ERR_TYPE, "Reader was released"); 83 - rs_default_reader_error_read_requests(js, reader_obj, js->thrown_value); 82 + ant_value_t release_err = js_make_error_silent(js, JS_ERR_TYPE, "Reader was released"); 83 + rs_default_reader_error_read_requests(js, reader_obj, release_err); 84 84 } 85 85 86 86 ant_value_t old_closed = rs_reader_closed(reader_obj); 87 87 ant_value_t new_closed = js_mkpromise(js); 88 - js_mkerr_typed(js, JS_ERR_TYPE, "Reader was released"); 89 - ant_value_t release_err = js->thrown_value; 88 + 89 + ant_value_t release_err = js_make_error_silent(js, JS_ERR_TYPE, "Reader was released"); 90 90 rs_stream_t *rs = rs_get_stream(stream_obj); 91 91 92 92 if (rs && rs->state == RS_STATE_READABLE) { ··· 105 105 ant_value_t ws_obj = js_get_slot(writer_obj, SLOT_ENTRIES); 106 106 if (!is_object_type(ws_obj)) return; 107 107 108 - js_mkerr_typed(js, JS_ERR_TYPE, "Writer was released"); 109 - ant_value_t rel_err = js->thrown_value; 108 + ant_value_t rel_err = js_make_error_silent(js, JS_ERR_TYPE, "Writer was released"); 110 109 ant_value_t ready = js_mkpromise(js); 110 + 111 111 js_reject_promise(js, ready, rel_err); 112 112 promise_mark_handled(ready); 113 113 js_set_slot(writer_obj, SLOT_WS_READY, ready);
+3 -4
src/streams/readable.c
··· 556 556 if (!stream) return js_mkundef(); 557 557 558 558 if (rs_reader_has_reqs(js, js->this_val)) { 559 - js_mkerr_typed(js, JS_ERR_TYPE, "Reader was released"); 560 - rs_default_reader_error_read_requests(js, js->this_val, js->thrown_value); 559 + ant_value_t release_err = js_make_error_silent(js, JS_ERR_TYPE, "Reader was released"); 560 + rs_default_reader_error_read_requests(js, js->this_val, release_err); 561 561 } 562 562 563 563 ant_value_t new_closed = js_mkpromise(js); 564 - js_mkerr_typed(js, JS_ERR_TYPE, "Reader was released"); 565 - ant_value_t release_err = js->thrown_value; 564 + ant_value_t release_err = js_make_error_silent(js, JS_ERR_TYPE, "Reader was released"); 566 565 567 566 if (stream->state == RS_STATE_READABLE) { 568 567 ant_value_t old_closed = rs_reader_closed(js->this_val);
+1 -2
src/streams/writable.c
··· 928 928 ant_value_t stream_obj = ws_writer_stream(js->this_val); 929 929 if (!is_object_type(stream_obj)) return js_mkundef(); 930 930 931 - js_mkerr_typed(js, JS_ERR_TYPE, "Writer was released"); 932 - ant_value_t release_err = js->thrown_value; 931 + ant_value_t release_err = js_make_error_silent(js, JS_ERR_TYPE, "Writer was released"); 933 932 934 933 ws_writer_ensure_ready_promise_rejected(js, js->this_val, release_err); 935 934 ws_writer_ensure_closed_promise_rejected(js, js->this_val, release_err);