mirror of https://github.com/python/cpython
bpo-44297: Fix missing line number in generator expressions (GH-26801)
* Make sure that line number is set when entering comprehension scope in compiler.
This commit is contained in:
parent
5d2b3a0d68
commit
82e5c28af7
|
@ -895,6 +895,21 @@ if 1:
|
|||
for (_, _, line) in func.__code__.co_lines() ]
|
||||
self.assertEqual(lines, code_lines)
|
||||
|
||||
def test_line_number_genexp(self):
|
||||
|
||||
def return_genexp():
|
||||
return (1
|
||||
for
|
||||
x
|
||||
in
|
||||
y)
|
||||
genexp_lines = [None, 1, 3, 1]
|
||||
|
||||
genexp_code = return_genexp.__code__.co_consts[1]
|
||||
code_lines = [None if line is None else line-return_genexp.__code__.co_firstlineno
|
||||
for (_, _, line) in genexp_code.co_lines() ]
|
||||
self.assertEqual(genexp_lines, code_lines)
|
||||
|
||||
|
||||
def test_big_dict_literal(self):
|
||||
# The compiler has a flushing point in "compiler_dict" that calls compiles
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Make sure that the line number is set when entering a comprehension scope.
|
||||
Ensures that backtraces inclusing generator expressions show the correct
|
||||
line number.
|
|
@ -4900,6 +4900,7 @@ compiler_comprehension(struct compiler *c, expr_ty e, int type,
|
|||
{
|
||||
goto error;
|
||||
}
|
||||
SET_LOC(c, e);
|
||||
|
||||
is_async_generator = c->u->u_ste->ste_coroutine;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue