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".
pull/4265/head
Milan Rossa 2019-08-19 14:16:33 +02:00 zatwierdzone przez Damien George
rodzic 7d851a27f1
commit ae6fe8b43c
2 zmienionych plików z 5 dodań i 0 usunięć

Wyświetl plik

@ -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) {

Wyświetl plik

@ -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