Commit 5f3c3ec5 authored by Damien George's avatar Damien George
Browse files

py/parsenum: Provide detailed error for int parsing with escaped bytes.

This patch adds more fine grained error message control for errors when
parsing integers (now has terse, normal and detailed).  When detailed is
enabled, the error now escapes bytes when printing them so they can be
more easily seen.
parent c4489a05
...@@ -147,9 +147,18 @@ value_error: ...@@ -147,9 +147,18 @@ value_error:
mp_obj_t exc = mp_obj_new_exception_msg(&mp_type_ValueError, mp_obj_t exc = mp_obj_new_exception_msg(&mp_type_ValueError,
"invalid syntax for integer"); "invalid syntax for integer");
raise_exc(exc, lex); raise_exc(exc, lex);
} else { } else if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_NORMAL) {
mp_obj_t exc = mp_obj_new_exception_msg_varg(&mp_type_ValueError, mp_obj_t exc = mp_obj_new_exception_msg_varg(&mp_type_ValueError,
"invalid syntax for integer with base %d: '%.*s'", base, top - str_val_start, str_val_start); "invalid syntax for integer with base %d", base);
raise_exc(exc, lex);
} else {
vstr_t vstr;
mp_print_t print;
vstr_init_print(&vstr, 50, &print);
mp_printf(&print, "invalid syntax for integer with base %d: ", base);
mp_str_print_quoted(&print, str_val_start, top - str_val_start, true);
mp_obj_t exc = mp_obj_new_exception_arg1(&mp_type_ValueError,
mp_obj_new_str_from_vstr(&mp_type_str, &vstr));
raise_exc(exc, lex); raise_exc(exc, lex);
} }
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment