diff --git a/py/obj.c b/py/obj.c index bdafc72476..078284f2a8 100644 --- a/py/obj.c +++ b/py/obj.c @@ -55,10 +55,17 @@ void mp_obj_print_exception(mp_obj_t exc) { printf("Traceback (most recent call last):\n"); for (int i = n - 3; i >= 0; i -= 3) { #if MICROPY_ENABLE_SOURCE_LINE - printf(" File \"%s\", line %d, in %s\n", qstr_str(values[i]), (int)values[i + 1], qstr_str(values[i + 2])); + printf(" File \"%s\", line %d", qstr_str(values[i]), (int)values[i + 1]); #else - printf(" File \"%s\", in %s\n", qstr_str(values[i]), qstr_str(values[i + 2])); + printf(" File \"%s\"", qstr_str(values[i])); #endif + // the block name can be NULL if it's unknown + qstr block = values[i + 2]; + if (block == MP_QSTR_NULL) { + printf("\n"); + } else { + printf(", in %s\n", qstr_str(block)); + } } } } diff --git a/py/parsehelper.c b/py/parsehelper.c index d467399a17..2a05ff2ce2 100644 --- a/py/parsehelper.c +++ b/py/parsehelper.c @@ -61,7 +61,8 @@ mp_obj_t mp_parse_make_exception(mp_lexer_t *lex, mp_parse_error_kind_t parse_er } // add traceback to give info about file name and location - mp_obj_exception_add_traceback(exc, mp_lexer_source_name(lex), mp_lexer_cur(lex)->src_line, mp_lexer_cur(lex)->src_column); + // we don't have a 'block' name, so just pass the NULL qstr to indicate this + mp_obj_exception_add_traceback(exc, mp_lexer_source_name(lex), mp_lexer_cur(lex)->src_line, MP_QSTR_NULL); return exc; }