bpo-44297: Fix missing line number in generator expressions (GH-26821)
* Make sure that line number is set when entering comprehension scope in compiler.
(cherry picked from commit 82e5c28af7049c4f5343c808f172cbe2e145f49b)
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index ea8ae22..6dc1c38 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -895,6 +895,21 @@ def aug_store_attr():
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