diff options
| author | Damien George | 2014-01-18 23:24:36 +0000 |
|---|---|---|
| committer | Damien George | 2014-01-18 23:24:36 +0000 |
| commit | 08335004cfe95048ee06134a3e49b9fb75639139 (patch) | |
| tree | 7518a854012938fd70c57b3571a630a142b84f28 /stm/main.c | |
| parent | aefe79880f8c5f66132673ccc9be27d2ca29005b (diff) | |
Add source file name and line number to error messages.
Byte code has a map from byte-code offset to source-code line number,
used to give better error messages.
Diffstat (limited to 'stm/main.c')
| -rw-r--r-- | stm/main.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/stm/main.c b/stm/main.c index 4b6aaf76f..c49fa42ff 100644 --- a/stm/main.c +++ b/stm/main.c @@ -421,6 +421,7 @@ void do_repl(void) { qstr parse_exc_id; const char *parse_exc_msg; mp_parse_node_t pn = mp_parse(lex, MP_PARSE_SINGLE_INPUT, &parse_exc_id, &parse_exc_msg); + qstr source_name = mp_lexer_source_name(lex); if (pn == MP_PARSE_NODE_NULL) { // parse error @@ -430,7 +431,7 @@ void do_repl(void) { } else { // parse okay mp_lexer_free(lex); - mp_obj_t module_fun = mp_compile(pn, true); + mp_obj_t module_fun = mp_compile(pn, source_name, true); if (module_fun != mp_const_none) { nlr_buf_t nlr; uint32_t start = sys_tick_counter; @@ -465,6 +466,7 @@ bool do_file(const char *filename) { qstr parse_exc_id; const char *parse_exc_msg; mp_parse_node_t pn = mp_parse(lex, MP_PARSE_FILE_INPUT, &parse_exc_id, &parse_exc_msg); + qstr source_name = mp_lexer_source_name(lex); if (pn == MP_PARSE_NODE_NULL) { // parse error @@ -476,7 +478,7 @@ bool do_file(const char *filename) { mp_lexer_free(lex); - mp_obj_t module_fun = mp_compile(pn, false); + mp_obj_t module_fun = mp_compile(pn, source_name, false); if (module_fun == mp_const_none) { return false; } @@ -1095,7 +1097,7 @@ soft_reset: printf("pars;al=%u\n", m_get_total_bytes_allocated()); sys_tick_delay_ms(1000); //parse_node_show(pn, 0); - mp_obj_t module_fun = mp_compile(pn, false); + mp_obj_t module_fun = mp_compile(pn, 0, false); printf("comp;al=%u\n", m_get_total_bytes_allocated()); sys_tick_delay_ms(1000); |
