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 | |
parent | fa5950eb00b92c805a073323c7dd3f52072c8b4c (diff) | |
download | micropython-82f37bf0d1080b4f508a6af36088cbe12b50c70b.tar.gz micropython-82f37bf0d1080b4f508a6af36088cbe12b50c70b.zip |
tests: Add specific test for closures in native emitter.
-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 |