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.

never return bare error T_ERR to shape

+13 -2
+7 -1
src/ant.c
··· 5791 5791 t = T_FUNC; 5792 5792 } 5793 5793 5794 - if (t != T_OBJ && t != T_ARR && t != T_FUNC) { 5794 + if (!is_object_type(obj)) { 5795 5795 return js_mkerr(js, "Object.defineProperty called on non-object"); 5796 5796 } 5797 5797 ··· 10268 10268 } 10269 10269 10270 10270 void js_reject_promise(ant_t *js, ant_value_t p, ant_value_t val) { 10271 + if (vtype(val) == T_ERR) { 10272 + if (vdata(val) != 0) val = mkval(T_OBJ, vdata(val)); 10273 + else if (js->thrown_exists && is_object_type(js->thrown_value)) val = js->thrown_value; 10274 + else val = js_make_error_silent(js, JS_ERR_INTERNAL, "unknown error"); 10275 + } 10276 + 10271 10277 ant_promise_state_t *pd = get_promise_data(js, p, false); 10272 10278 if (!pd || pd->state != 0) return; 10273 10279
+6 -1
src/errors.c
··· 843 843 } 844 844 845 845 ant_value_t stack_str = js_build_stack_text(js, JS_STACK_TEXT_FROM_THROW_VALUE, value); 846 - if (vtype(stack_str) != T_STR) return mkval(T_ERR, 0); 846 + if (vtype(stack_str) != T_STR) { 847 + js->thrown_exists = true; 848 + js->thrown_value = value; 849 + js_clear_error_site(js); 850 + return mkval(T_ERR, 0); 851 + } 847 852 848 853 if (vtype(value) == T_OBJ) { 849 854 js_set(js, value, "stack", stack_str);