micropython: add micropython component
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# Test various loop types, some may be implemented/optimized differently
|
||||
while True:
|
||||
try:
|
||||
break
|
||||
finally:
|
||||
print('finally 1')
|
||||
|
||||
|
||||
for i in [1, 5, 10]:
|
||||
try:
|
||||
continue
|
||||
finally:
|
||||
print('finally 2')
|
||||
|
||||
for i in range(3):
|
||||
try:
|
||||
continue
|
||||
finally:
|
||||
print('finally 3')
|
||||
|
||||
# Multi-level
|
||||
for i in range(4):
|
||||
print(i)
|
||||
try:
|
||||
while True:
|
||||
try:
|
||||
try:
|
||||
break
|
||||
finally:
|
||||
print('finally 1')
|
||||
finally:
|
||||
print('finally 2')
|
||||
print('here')
|
||||
finally:
|
||||
print('finnaly 3')
|
||||
|
||||
# break from within try-finally, within for-loop
|
||||
for i in [1]:
|
||||
try:
|
||||
print(i)
|
||||
break
|
||||
finally:
|
||||
print('finally 4')
|
||||
|
||||
# Test unwind-jump where there is nothing in the body of the try or finally.
|
||||
# This checks that the bytecode emitter allocates enough stack for the unwind.
|
||||
for i in [1]:
|
||||
try:
|
||||
break
|
||||
finally:
|
||||
pass
|
||||
|
||||
# The following test checks that the globals dict is valid after a call to a
|
||||
# function that has an unwind jump.
|
||||
# There was a bug where an unwind jump would trash the globals dict upon return
|
||||
# from a function, because it used the Python-stack incorrectly.
|
||||
def f():
|
||||
for i in [1]:
|
||||
try:
|
||||
break
|
||||
finally:
|
||||
pass
|
||||
def g():
|
||||
global global_var
|
||||
f()
|
||||
print(global_var)
|
||||
global_var = 'global'
|
||||
g()
|
Reference in New Issue
Block a user