py/compile: Improve the line numbering precision for comprehensions.

The line number for comprehensions is now always reported as the correct
global location in the script, instead of just "line 1".
This commit is contained in:
Milan Rossa 2019-08-19 14:16:33 +02:00 committed by Damien George
parent 7d851a27f1
commit ae6fe8b43c
2 changed files with 5 additions and 0 deletions

View File

@ -3112,6 +3112,9 @@ STATIC void compile_scope(compiler_t *comp, scope_t *scope, pass_kind_t pass) {
scope->num_pos_args = 1;
}
// Set the source line number for the start of the comprehension
EMIT_ARG(set_source_line, pns->source_line);
if (scope->kind == SCOPE_LIST_COMP) {
EMIT_ARG(build, 0, MP_EMIT_BUILD_LIST);
} else if (scope->kind == SCOPE_DICT_COMP) {

View File

@ -449,6 +449,7 @@ arg names: * * *
(N_STATE 9)
(N_EXC_STACK 0)
bc=-\\d\+ line=1
bc=0 line=59
00 LOAD_NULL
01 LOAD_FAST 2
02 LOAD_NULL
@ -471,6 +472,7 @@ arg names: * * *
(N_STATE 10)
(N_EXC_STACK 0)
bc=-\\d\+ line=1
bc=0 line=60
00 BUILD_LIST 0
02 LOAD_FAST 2
03 GET_ITER_STACK