Skip to content

Commit b5af4a7

Browse files
committed
add unittest for generator early binding or free vars in outermost loop
1 parent e2ed64d commit b5af4a7

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

graalpython/com.oracle.graal.python.test/src/tests/test_generators.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,3 @@ def f():
168168

169169
if sys.version_info.minor == 4 and sys.version_info.micro < 3:
170170
del ExceptionTest
171-
172-
173-
def test_unboundlocalerror_gen():
174-
def func(args):
175-
args = (arg for arg in args)
176-
return set(args)
177-
178-
assert func([1, 2, 3, 4]) == {1, 2, 3, 4}

graalpython/com.oracle.graal.python.test/src/tests/test_scope.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,3 +850,24 @@ def register():
850850
register()
851851

852852
assert MyClass.a_counter == 24
853+
854+
855+
def test_generator_scope():
856+
my_obj = [1, 2, 3, 4]
857+
my_obj = (i for i in my_obj for j in y)
858+
y = [1, 2]
859+
860+
assert set(my_obj.gi_code.co_cellvars) == set()
861+
assert set(my_obj.gi_code.co_freevars) == {'y'}
862+
863+
864+
def test_func_scope():
865+
my_obj = [1, 2, 3, 4]
866+
867+
def my_obj():
868+
return [i for i in my_obj for j in y]
869+
870+
y = [1, 2]
871+
872+
assert set(my_obj.__code__.co_cellvars) == set()
873+
assert set(my_obj.__code__.co_freevars) == {'my_obj', 'y'}

0 commit comments

Comments
 (0)