summaryrefslogtreecommitdiff
path: root/tests/micropython/native_closure.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-04-03 16:14:25 +0100
committerDamien George <damien.p.george@gmail.com>2015-04-03 16:14:25 +0100
commit82f37bf0d1080b4f508a6af36088cbe12b50c70b (patch)
treee83996cc44b3a25c1f65662faa42116764e391ef /tests/micropython/native_closure.py
parentfa5950eb00b92c805a073323c7dd3f52072c8b4c (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.py32
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))