assert f() == 'abc' # don't leak in Py3 code
return result
+def pytyped_list_comp_in_closure():
+ """
+ >>> pytyped_list_comp_in_closure()
+ [0, 4, 8]
+ """
+ cdef object x
+ x = 'abc'
+ def f():
+ return x
+ result = [x*2 for x in range(5) if x % 2 == 0]
+ assert x == 'abc' # don't leak in Py3 code
+ assert f() == 'abc' # don't leak in Py3 code
+ return result
+
+def pytyped_list_comp_in_closure_repeated():
+ """
+ >>> pytyped_list_comp_in_closure_repeated()
+ [0, 4, 8]
+ """
+ cdef object x
+ x = 'abc'
+ def f():
+ return x
+ for i in range(3):
+ result = [x*2 for x in range(5) if x % 2 == 0]
+ assert x == 'abc' # don't leak in Py3 code
+ assert f() == 'abc' # don't leak in Py3 code
+ return result
+
def genexpr_in_closure():
"""
>>> genexpr_in_closure()
assert f() == 'abc' # don't leak in Py3 code
return result
+def pytyped_genexpr_in_closure():
+ """
+ >>> pytyped_genexpr_in_closure()
+ [0, 4, 8]
+ """
+ cdef object x
+ x = 'abc'
+ def f():
+ return x
+ result = list( x*2 for x in range(5) if x % 2 == 0 )
+ assert x == 'abc' # don't leak in Py3 code
+ assert f() == 'abc' # don't leak in Py3 code
+ return result
+
+def pytyped_genexpr_in_closure_repeated():
+ """
+ >>> pytyped_genexpr_in_closure_repeated()
+ [0, 4, 8]
+ """
+ cdef object x
+ x = 'abc'
+ def f():
+ return x
+ for i in range(3):
+ result = list( x*2 for x in range(5) if x % 2 == 0 )
+ assert x == 'abc' # don't leak in Py3 code
+ assert f() == 'abc' # don't leak in Py3 code
+ return result
+
def genexpr_scope_in_closure():
"""
>>> genexpr_scope_in_closure()