2018-08-16 00:43:35 -04:00
|
|
|
# test with handling within a viper function
|
|
|
|
|
2021-04-20 01:22:44 -04:00
|
|
|
|
2018-08-16 00:43:35 -04:00
|
|
|
class C:
|
|
|
|
def __init__(self):
|
2021-04-20 01:22:44 -04:00
|
|
|
print("__init__")
|
|
|
|
|
2018-08-16 00:43:35 -04:00
|
|
|
def __enter__(self):
|
2021-04-20 01:22:44 -04:00
|
|
|
print("__enter__")
|
|
|
|
|
2018-08-16 00:43:35 -04:00
|
|
|
def __exit__(self, a, b, c):
|
2021-04-20 01:22:44 -04:00
|
|
|
print("__exit__", a, b, c)
|
|
|
|
|
2018-08-16 00:43:35 -04:00
|
|
|
|
|
|
|
# basic with
|
|
|
|
@micropython.viper
|
|
|
|
def f():
|
|
|
|
with C():
|
|
|
|
print(1)
|
2021-04-20 01:22:44 -04:00
|
|
|
|
|
|
|
|
2018-08-16 00:43:35 -04:00
|
|
|
f()
|
|
|
|
|
|
|
|
# nested with and try-except
|
|
|
|
@micropython.viper
|
|
|
|
def f():
|
|
|
|
try:
|
|
|
|
with C():
|
|
|
|
print(1)
|
|
|
|
fail
|
|
|
|
print(2)
|
|
|
|
except NameError:
|
2021-04-20 01:22:44 -04:00
|
|
|
print("NameError")
|
|
|
|
|
|
|
|
|
2018-08-16 00:43:35 -04:00
|
|
|
f()
|