summaryrefslogtreecommitdiff
path: root/tests/micropython/viper_try.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/micropython/viper_try.py')
-rw-r--r--tests/micropython/viper_try.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/micropython/viper_try.py b/tests/micropython/viper_try.py
new file mode 100644
index 000000000..d75b3418e
--- /dev/null
+++ b/tests/micropython/viper_try.py
@@ -0,0 +1,40 @@
+# test try handling within a viper function
+
+# basic try-finally
+@micropython.viper
+def f():
+ try:
+ fail
+ finally:
+ print('finally')
+try:
+ f()
+except NameError:
+ print('NameError')
+
+# nested try-except with try-finally
+@micropython.viper
+def f():
+ try:
+ try:
+ fail
+ finally:
+ print('finally')
+ except NameError:
+ print('NameError')
+f()
+
+# check that locals written to in try blocks keep their values
+@micropython.viper
+def f():
+ a = 100
+ try:
+ print(a)
+ a = 200
+ fail
+ except NameError:
+ print(a)
+ a = 300
+ print(a)
+f()
+