1# mode: run 2# tag: closures 3# ticket: 554 4 5def call_f(x): 6 """ 7 >>> call_f(2) 8 4 9 """ 10 return f(x) 11 12 13cdef f(x): # def here => works fine 14 def g(y): return y*x # cdef here => compile error 15 return g(x) # faults@ INCREF(.*cur_scope->.*v_x 16 17 18def closure_in_void(): 19 """ 20 >>> genex = closure_in_void() 21 >>> list(genex) 22 ['a', 'b', 'c'] 23 """ 24 l = [] 25 add_gen(l) 26 return l[0] 27 28 29cdef void add_gen(l): 30 x = "abc" 31 l.append((c for c in x)) 32 33 34def closure_in_int(): 35 """ 36 >>> genex = closure_in_int() 37 >>> list(genex) 38 ['a', 'b', 'c'] 39 """ 40 l = [] 41 add_gen_int(l) 42 return l[0] 43 44 45cdef int add_gen_int(l): 46 x = "abc" 47 l.append((c for c in x)) 48