artiq/artiq/test/lit/integration/finally.py

79 lines
1.3 KiB
Python

# RUN: %python -m artiq.compiler.testbench.jit %s >%t.1
# RUN: OutputCheck %s --file-to-check=%t.1
# RUN: %python %s >%t.2
# RUN: OutputCheck %s --file-to-check=%t.2
# REQUIRES: exceptions
def f():
while True:
try:
print("f-try")
break
finally:
print("f-finally")
print("f-out")
def g():
x = True
while x:
try:
print("g-try")
x = False
continue
finally:
print("g-finally")
print("g-out")
def h():
try:
print("h-try")
return 10
finally:
print("h-finally")
print("h-out")
return 20
def i():
try:
print("i-try")
return 10
finally:
print("i-finally")
return 30
print("i-out")
return 20
def j():
try:
print("j-try")
finally:
print("j-finally")
print("j-out")
# CHECK-L: f-try
# CHECK-L: f-finally
# CHECK-L: f-out
f()
# CHECK-L: g-try
# CHECK-L: g-finally
# CHECK-L: g-out
g()
# CHECK-L: h-try
# CHECK-L: h-finally
# CHECK-NOT-L: h-out
# CHECK-L: h 10
print("h", h())
# CHECK-L: i-try
# CHECK-L: i-finally
# CHECK-NOT-L: i-out
# CHECK-L: i 30
print("i", i())
# CHECK-L: j-try
# CHECK-L: j-finally
# CHECK-L: j-out
print("j", j())