circuitpython/tests/micropython/native_closure.py

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

47 lines
561 B
Python
Raw Permalink Normal View History

# test native emitter can handle closures correctly
2023-02-01 03:08:41 -05:00
# 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()())
2023-02-01 03:08:41 -05:00
# 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)())
2023-02-01 03:08:41 -05:00
# 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))