mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
[3.13] gh-119666: fix multiple class-scope comprehensions referencing __class__ (GH-120295) (#120299)
This commit is contained in:
parent
c15f94d6fb
commit
03cd44759f
3 changed files with 36 additions and 13 deletions
|
@ -168,6 +168,31 @@ class ListComprehensionTest(unittest.TestCase):
|
|||
"""
|
||||
self._check_in_scopes(code, raises=NameError)
|
||||
|
||||
def test_references___class___defined(self):
|
||||
code = """
|
||||
__class__ = 2
|
||||
res = [__class__ for x in [1]]
|
||||
"""
|
||||
self._check_in_scopes(
|
||||
code, outputs={"res": [2]}, scopes=["module", "function"])
|
||||
self._check_in_scopes(code, raises=NameError, scopes=["class"])
|
||||
|
||||
def test_references___class___enclosing(self):
|
||||
code = """
|
||||
__class__ = 2
|
||||
class C:
|
||||
res = [__class__ for x in [1]]
|
||||
res = C.res
|
||||
"""
|
||||
self._check_in_scopes(code, raises=NameError)
|
||||
|
||||
def test_super_and_class_cell_in_sibling_comps(self):
|
||||
code = """
|
||||
[super for _ in [1]]
|
||||
[__class__ for _ in [1]]
|
||||
"""
|
||||
self._check_in_scopes(code, raises=NameError)
|
||||
|
||||
def test_inner_cell_shadows_outer(self):
|
||||
code = """
|
||||
items = [(lambda: i) for i in range(5)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue