Skip to content

Commit 4775929

Browse files
committed
code changes for supporting 1-arg print_exception
1 parent fc991c2 commit 4775929

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

shared-bindings/traceback/__init__.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@
3939
//| ...
4040

4141
STATIC 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

Comments
 (0)