tests: Add specific test for closures in native emitter.
This commit is contained in:
parent
fa5950eb00
commit
82f37bf0d1
32
tests/micropython/native_closure.py
Normal file
32
tests/micropython/native_closure.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# test native emitter can handle closures correctly
|
||||||
|
|
||||||
|
# basic closure
|
||||||
|
@micropython.native
|
||||||
|
def f():
|
||||||
|
x = 1
|
||||||
|
@micropython.native
|
||||||
|
def g():
|
||||||
|
nonlocal x
|
||||||
|
return x
|
||||||
|
return g
|
||||||
|
print(f()())
|
||||||
|
|
||||||
|
# closing over an argument
|
||||||
|
@micropython.native
|
||||||
|
def f(x):
|
||||||
|
@micropython.native
|
||||||
|
def g():
|
||||||
|
nonlocal x
|
||||||
|
return x
|
||||||
|
return g
|
||||||
|
print(f(2)())
|
||||||
|
|
||||||
|
# closing over an argument and a normal local
|
||||||
|
@micropython.native
|
||||||
|
def f(x):
|
||||||
|
y = 2 * x
|
||||||
|
@micropython.native
|
||||||
|
def g(z):
|
||||||
|
return x + y + z
|
||||||
|
return g
|
||||||
|
print(f(2)(3))
|
3
tests/micropython/native_closure.py.exp
Normal file
3
tests/micropython/native_closure.py.exp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
1
|
||||||
|
2
|
||||||
|
9
|
Loading…
x
Reference in New Issue
Block a user