diff options
-rw-r--r-- | tests/micropython/native_closure.py | 32 | ||||
-rw-r--r-- | tests/micropython/native_closure.py.exp | 3 |
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/micropython/native_closure.py b/tests/micropython/native_closure.py new file mode 100644 index 0000000000..6c0592e52d --- /dev/null +++ b/tests/micropython/native_closure.py @@ -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)) diff --git a/tests/micropython/native_closure.py.exp b/tests/micropython/native_closure.py.exp new file mode 100644 index 0000000000..7f4277240f --- /dev/null +++ b/tests/micropython/native_closure.py.exp @@ -0,0 +1,3 @@ +1 +2 +9 |