test fixes
[cython.git] / tests / run / list_comp_in_closure_T598.pyx
1 # cython: language_level=3
2
3 def list_comp_in_closure():
4     """
5     >>> list_comp_in_closure()
6     [0, 4, 8]
7     """
8     x = 'abc'
9     def f():
10         return x
11     result = [x*2 for x in range(5) if x % 2 == 0]
12     assert x == 'abc' # don't leak in Py3 code
13     assert f() == 'abc' # don't leak in Py3 code
14     return result
15
16 def genexpr_in_closure():
17     """
18     >>> genexpr_in_closure()
19     [0, 4, 8]
20     """
21     x = 'abc'
22     def f():
23         return x
24     result = list( x*2 for x in range(5) if x % 2 == 0 )
25     assert x == 'abc' # don't leak in Py3 code
26     assert f() == 'abc' # don't leak in Py3 code
27     return result
28
29 def genexpr_scope_in_closure():
30     """
31     >>> genexpr_scope_in_closure()
32     [0, 4, 8]
33     """
34     i = 2
35     x = 'abc'
36     def f():
37         return i, x
38     result = list( x*i for x in range(5) if x % 2 == 0 )
39     assert x == 'abc' # don't leak in Py3 code
40     assert f() == (2,'abc') # don't leak in Py3 code
41     return result