From 82f37bf0d1080b4f508a6af36088cbe12b50c70b Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 3 Apr 2015 16:14:25 +0100 Subject: [PATCH] tests: Add specific test for closures in native emitter. --- tests/micropython/native_closure.py | 32 +++++++++++++++++++++++++ tests/micropython/native_closure.py.exp | 3 +++ 2 files changed, 35 insertions(+) create mode 100644 tests/micropython/native_closure.py create mode 100644 tests/micropython/native_closure.py.exp 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