tests: Add specific test for closures in native emitter.
parent
fa5950eb00
commit
82f37bf0d1
|
@ -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))
|
|
@ -0,0 +1,3 @@
|
|||
1
|
||||
2
|
||||
9
|
Loading…
Reference in New Issue