closure_inside_cdef_T554.pyx 509 Bytes
Newer Older
Stefan Behnel's avatar
Stefan Behnel committed
1 2
# mode: run
# tag: closures
Robert Bradshaw's avatar
Robert Bradshaw committed
3 4
# ticket: 554

5 6 7 8 9 10 11
def call_f(x):
    """
    >>> call_f(2)
    4
    """
    return f(x)

12

13
cdef f(x):                # def  here => works fine
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
   def g(y): return y*x   # cdef here => compile error
   return g(x)            # faults@ INCREF(.*cur_scope->.*v_x


def closure_in_void():
    """
    >>> genex = closure_in_void()
    >>> list(genex)
    ['a', 'b', 'c']
    """
    l = []
    add_gen(l)
    return l[0]


cdef void add_gen(l):
    x = "abc"
    l.append((c for c in x))