aboutsummaryrefslogtreecommitdiff
path: root/tests/basics/try_finally_return.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/try_finally_return.py')
-rw-r--r--tests/basics/try_finally_return.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/basics/try_finally_return.py b/tests/basics/try_finally_return.py
index 4adf3f097..31a507e8d 100644
--- a/tests/basics/try_finally_return.py
+++ b/tests/basics/try_finally_return.py
@@ -21,3 +21,52 @@ def func3():
print("finally 3")
print(func3())
+
+# for loop within try-finally
+def f():
+ try:
+ for i in [1, 2]:
+ return i
+ finally:
+ print('finally')
+print(f())
+
+# multiple for loops within try-finally
+def f():
+ try:
+ for i in [1, 2]:
+ for j in [3, 4]:
+ return (i, j)
+ finally:
+ print('finally')
+print(f())
+
+# multiple for loops and nested try-finally's
+def f():
+ try:
+ for i in [1, 2]:
+ for j in [3, 4]:
+ try:
+ for k in [5, 6]:
+ for l in [7, 8]:
+ return (i, j, k, l)
+ finally:
+ print('finally 2')
+ finally:
+ print('finally 1')
+print(f())
+
+# multiple for loops that are optimised, and nested try-finally's
+def f():
+ try:
+ for i in range(1, 3):
+ for j in range(3, 5):
+ try:
+ for k in range(5, 7):
+ for l in range(7, 9):
+ return (i, j, k, l)
+ finally:
+ print('finally 2')
+ finally:
+ print('finally 1')
+print(f())