From 82271f13e7eab69b909d538556e4781e971f7584 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Wed, 4 Oct 2006 02:24:52 +0000 Subject: 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. --- Lib/test/test_syntax.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'Lib/test/test_syntax.py') diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 692ba57a3e..8143032919 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -322,6 +322,20 @@ This is essentially a continue in a finally which should not be allowed. ... SyntaxError: 'continue' not supported inside 'finally' clause (, 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 (, line 3) """ import re -- cgit v1.2.1