From ae6fe8b43c08abe215dde355e04e561ad2dd1808 Mon Sep 17 00:00:00 2001 From: Milan Rossa Date: Mon, 19 Aug 2019 14:16:33 +0200 Subject: [PATCH] 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". --- py/compile.c | 3 +++ tests/cmdline/cmd_showbc.py.exp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/py/compile.c b/py/compile.c index 27b706c8fe..c0ae3de114 100644 --- a/py/compile.c +++ b/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) { diff --git a/tests/cmdline/cmd_showbc.py.exp b/tests/cmdline/cmd_showbc.py.exp index 8d36b89df7..8d5d2ffe30 100644 --- a/tests/cmdline/cmd_showbc.py.exp +++ b/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