+cimport cython
+
def add_n(int n):
"""
>>> f = add_n(3)
return f(a_f), g(b_g), h(b_h)
return resolve
+
+@cython.test_assert_path_exists("//DefNode//DefNode//DefNode//DefNode",
+ "//DefNode[@needs_outer_scope = False]", # deep_inner()
+ "//DefNode//DefNode//DefNode//DefNode[@needs_closure = False]", # h()
+ )
+@cython.test_fail_if_path_exists("//DefNode//DefNode[@needs_outer_scope = False]")
def deep_inner():
"""
>>> deep_inner()()
return g()
return f()
+
+@cython.test_assert_path_exists("//DefNode//DefNode//DefNode",
+ "//DefNode//DefNode//DefNode[@needs_outer_scope = False]", # a()
+ "//DefNode//DefNode//DefNode[@needs_closure = False]", # a(), g(), h()
+ )
+@cython.test_fail_if_path_exists("//DefNode//DefNode//DefNode[@needs_closure = True]") # a(), g(), h()
def deep_inner_sibling():
"""
>>> deep_inner_sibling()()
"""
cdef int x = 1
def f():
+ def a():
+ return 1
def g():
- return x+1
+ return x+a()
def h():
return g()
return h