summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_listcomps.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_listcomps.py')
-rw-r--r--Lib/test/test_listcomps.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/Lib/test/test_listcomps.py b/Lib/test/test_listcomps.py
index ae63f4a..fdd2d66 100644
--- a/Lib/test/test_listcomps.py
+++ b/Lib/test/test_listcomps.py
@@ -381,6 +381,32 @@ class ListComprehensionTest(unittest.TestCase):
with self.assertRaises(UnboundLocalError):
f()
+ def test_global_outside_cellvar_inside_plus_freevar(self):
+ code = """
+ a = 1
+ def f():
+ func, = [(lambda: b) for b in [a]]
+ return b, func()
+ x = f()
+ """
+ self._check_in_scopes(
+ code, {"x": (2, 1)}, ns={"b": 2}, scopes=["function", "module"])
+ # inside a class, the `a = 1` assignment is not visible
+ self._check_in_scopes(code, raises=NameError, scopes=["class"])
+
+ def test_cell_in_nested_comprehension(self):
+ code = """
+ a = 1
+ def f():
+ (func, inner_b), = [[lambda: b for b in c] + [b] for c in [[a]]]
+ return b, inner_b, func()
+ x = f()
+ """
+ self._check_in_scopes(
+ code, {"x": (2, 2, 1)}, ns={"b": 2}, scopes=["function", "module"])
+ # inside a class, the `a = 1` assignment is not visible
+ self._check_in_scopes(code, raises=NameError, scopes=["class"])
+
def test_name_error_in_class_scope(self):
code = """
y = 1