summaryrefslogtreecommitdiff
path: root/tests/micropython
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-09-15 22:37:07 +1000
committerDamien George <damien.p.george@gmail.com>2018-09-15 22:39:27 +1000
commit93d71c5436488d52d47d165dd020217415e79a64 (patch)
treef00d9f11c16d8ea52d3574603a834bf912cddfab /tests/micropython
parentf12e039c2bb805364f55b1fb81b92c1b03c9104a (diff)
py/emitnative: Make viper funcs run with their correct globals context.
Viper functions will now capture the globals at the point they were defined and use these globals when executing.
Diffstat (limited to 'tests/micropython')
-rw-r--r--tests/micropython/viper_globals.py19
-rw-r--r--tests/micropython/viper_globals.py.exp2
2 files changed, 21 insertions, 0 deletions
diff --git a/tests/micropython/viper_globals.py b/tests/micropython/viper_globals.py
new file mode 100644
index 000000000..9c68dc3da
--- /dev/null
+++ b/tests/micropython/viper_globals.py
@@ -0,0 +1,19 @@
+# test that viper functions capture their globals context
+
+gl = {}
+
+exec("""
+@micropython.viper
+def f():
+ return x
+""", gl)
+
+# x is not yet in the globals, f should not see it
+try:
+ print(gl['f']())
+except NameError:
+ print('NameError')
+
+# x is in globals, f should now see it
+gl['x'] = 123
+print(gl['f']())
diff --git a/tests/micropython/viper_globals.py.exp b/tests/micropython/viper_globals.py.exp
new file mode 100644
index 000000000..5731b89c1
--- /dev/null
+++ b/tests/micropython/viper_globals.py.exp
@@ -0,0 +1,2 @@
+NameError
+123