Fix for SF bug 1569998: break permitted inside try.

The compiler was checking that there was something on the fblock
stack, but not that there was a loop on the stack.  Fixed that and
added a test for the specific syntax error.

Bug fix candidate.
This commit is contained in:
Jeremy Hylton 2006-10-04 02:24:52 +00:00
parent 1e3c3b15df
commit 82271f13e7
2 changed files with 27 additions and 1 deletions

View file

@ -322,6 +322,20 @@ This is essentially a continue in a finally which should not be allowed.
...
SyntaxError: 'continue' not supported inside 'finally' clause (<doctest test.test_syntax[41]>, line 8)
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,
so we need to be sure that a break is actually inside a loop. If it
isn't, there should be a syntax error.
>>> try:
... print 1
... break
... print 2
... finally:
... print 3
Traceback (most recent call last):
...
SyntaxError: 'break' outside loop (<doctest test.test_syntax[42]>, line 3)
"""
import re