diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2018-03-18 07:56:52 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-18 07:56:52 (GMT) |
commit | fe2bbb1869b42222a3f331a3dfb8b304a19a5819 (patch) | |
tree | 0f9e51eb7b9dbfab1d92a1538cef297081a46b55 /Lib/test/test_syntax.py | |
parent | 134cb01cda50f02725575808130b05d2d776693f (diff) | |
download | cpython-fe2bbb1869b42222a3f331a3dfb8b304a19a5819.zip cpython-fe2bbb1869b42222a3f331a3dfb8b304a19a5819.tar.gz cpython-fe2bbb1869b42222a3f331a3dfb8b304a19a5819.tar.bz2 |
bpo-32489: Allow 'continue' in 'finally' clause. (GH-5822)
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r-- | Lib/test/test_syntax.py | 68 |
1 files changed, 23 insertions, 45 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 2b96a94..fa1e7aa 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -298,7 +298,7 @@ continue in for loop under finally should be ok. >>> test() 9 -Start simple, a continue in a finally should not be allowed. +continue in a finally should be ok. >>> def test(): ... for abc in range(10): @@ -306,11 +306,9 @@ Start simple, a continue in a finally should not be allowed. ... pass ... finally: ... continue - Traceback (most recent call last): - ... - SyntaxError: 'continue' not supported inside 'finally' clause - -This is essentially a continue in a finally which should not be allowed. + ... print(abc) + >>> test() + 9 >>> def test(): ... for abc in range(10): @@ -321,9 +319,24 @@ This is essentially a continue in a finally which should not be allowed. ... continue ... except: ... pass - Traceback (most recent call last): - ... - SyntaxError: 'continue' not supported inside 'finally' clause + ... print(abc) + >>> test() + 9 + + >>> def test(): + ... for abc in range(10): + ... try: + ... pass + ... finally: + ... try: + ... pass + ... except: + ... continue + ... print(abc) + >>> test() + 9 + +A continue outside loop should not be allowed. >>> def foo(): ... try: @@ -332,42 +345,7 @@ This is essentially a continue in a finally which should not be allowed. ... continue Traceback (most recent call last): ... - SyntaxError: 'continue' not supported inside 'finally' clause - - >>> def foo(): - ... for a in (): - ... try: - ... pass - ... finally: - ... continue - Traceback (most recent call last): - ... - SyntaxError: 'continue' not supported inside 'finally' clause - - >>> def foo(): - ... for a in (): - ... try: - ... pass - ... finally: - ... try: - ... continue - ... finally: - ... pass - Traceback (most recent call last): - ... - SyntaxError: 'continue' not supported inside 'finally' clause - - >>> def foo(): - ... for a in (): - ... try: pass - ... finally: - ... try: - ... pass - ... except: - ... continue - Traceback (most recent call last): - ... - SyntaxError: 'continue' not supported inside 'finally' clause + SyntaxError: 'continue' not properly in loop There is one test for a break that is not in a loop. The compiler uses a single data structure to keep track of try-finally and loops, |