diff options
author | Damien George <damien.p.george@gmail.com> | 2015-04-03 16:14:25 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-04-03 16:14:25 +0100 |
commit | 82f37bf0d1080b4f508a6af36088cbe12b50c70b (patch) | |
tree | e83996cc44b3a25c1f65662faa42116764e391ef /tests/micropython/native_closure.py | |
parent | fa5950eb00b92c805a073323c7dd3f52072c8b4c (diff) |
tests: Add specific test for closures in native emitter.
Diffstat (limited to 'tests/micropython/native_closure.py')
-rw-r--r-- | tests/micropython/native_closure.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/micropython/native_closure.py b/tests/micropython/native_closure.py new file mode 100644 index 000000000..6c0592e52 --- /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)) |