circuitpython/tests/micropython/native_closure.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

44 lines
558 B
Python
Raw Normal View History

# test native emitter can handle closures correctly
# basic closure
@micropython.native
def f():
x = 1
2021-03-15 09:57:36 -04:00
@micropython.native
def g():
nonlocal x
return x
2021-03-15 09:57:36 -04:00
return g
2021-03-15 09:57:36 -04:00
print(f()())
# closing over an argument
@micropython.native
def f(x):
@micropython.native
def g():
nonlocal x
return x
2021-03-15 09:57:36 -04:00
return g
2021-03-15 09:57:36 -04:00
print(f(2)())
# closing over an argument and a normal local
@micropython.native
def f(x):
y = 2 * x
2021-03-15 09:57:36 -04:00
@micropython.native
def g(z):
return x + y + z
2021-03-15 09:57:36 -04:00
return g
2021-03-15 09:57:36 -04:00
print(f(2)(3))