Browse Source

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 5 years ago
committed by Damien George
parent
commit
ae6fe8b43c
  1. 3
      py/compile.c
  2. 2
      tests/cmdline/cmd_showbc.py.exp

3
py/compile.c

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

2
tests/cmdline/cmd_showbc.py.exp

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

Loading…
Cancel
Save