diff options
Diffstat (limited to 'tests/basics/try_finally_return.py')
| -rw-r--r-- | tests/basics/try_finally_return.py | 49 |
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()) |
