3939//| ...
4040
4141STATIC void traceback_exception_common (bool is_print_exception , mp_print_t * print , size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
42- enum { ARG_etype , ARG_value , ARG_tb , ARG_limit , ARG_file , ARG_chain };
42+ enum { ARG_exc , ARG_value , ARG_tb , ARG_limit , ARG_file , ARG_chain };
4343 static const mp_arg_t allowed_args [] = {
44- { MP_QSTR_etype , MP_ARG_OBJ | MP_ARG_REQUIRED , {.u_obj = MP_OBJ_NULL } },
45- { MP_QSTR_value , MP_ARG_OBJ | MP_ARG_REQUIRED , {.u_obj = MP_OBJ_NULL } },
46- { MP_QSTR_tb , MP_ARG_OBJ | MP_ARG_REQUIRED , {.u_obj = MP_OBJ_NULL } },
44+ { MP_QSTR_ , MP_ARG_OBJ | MP_ARG_REQUIRED , {.u_obj = MP_OBJ_NULL } },
45+ { MP_QSTR_value , MP_ARG_OBJ , {.u_obj = MP_OBJ_NULL } },
46+ { MP_QSTR_tb , MP_ARG_OBJ , {.u_obj = MP_OBJ_NULL } },
4747 { MP_QSTR_limit , MP_ARG_OBJ , {.u_obj = mp_const_none } },
4848 { MP_QSTR_file , MP_ARG_OBJ , {.u_obj = mp_const_none } },
4949 { MP_QSTR_chain , MP_ARG_BOOL , {.u_bool = true} },
@@ -53,6 +53,9 @@ STATIC void traceback_exception_common(bool is_print_exception, mp_print_t *prin
5353 mp_arg_parse_all (n_args , pos_args , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
5454
5555 mp_obj_t value = args [ARG_value ].u_obj ;
56+ if (value == MP_OBJ_NULL ) {
57+ value = args [ARG_exc ].u_obj ;
58+ }
5659 mp_obj_t tb_obj = args [ARG_tb ].u_obj ;
5760 mp_obj_t limit_obj = args [ARG_limit ].u_obj ;
5861
@@ -88,7 +91,9 @@ STATIC void traceback_exception_common(bool is_print_exception, mp_print_t *prin
8891 mp_obj_exception_t * exc = mp_obj_exception_get_native (value );
8992 mp_obj_traceback_t * trace_backup = exc -> traceback ;
9093
91- if (tb_obj != mp_const_none && print_tb ) {
94+ if (tb_obj == MP_OBJ_NULL ) {
95+ /* Print the traceback's exception as is */
96+ } else if (tb_obj != mp_const_none && print_tb ) {
9297 exc -> traceback = mp_arg_validate_type (tb_obj , & mp_type_traceback , MP_QSTR_tb );
9398 } else {
9499 exc -> traceback = (mp_obj_traceback_t * )& mp_const_empty_traceback_obj ;
0 commit comments