From: Mark Dickinson Date: Wed, 30 Jun 2010 16:27:57 +0000 (+0000) Subject: Issue #9125: Update parser module for "except ... as ..." syntax. X-Git-Tag: v2.7~33 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=070f0abc1978f87922cc200a6caeb37852d526ad;p=python Issue #9125: Update parser module for "except ... as ..." syntax. --- diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py index 07a4c3287c..dca904cb63 100644 --- a/Lib/test/test_parser.py +++ b/Lib/test/test_parser.py @@ -235,6 +235,12 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase): self.check_suite("try: pass\nexcept: pass\nelse: pass\n" "finally: pass\n") + def test_except_clause(self): + self.check_suite("try: pass\nexcept: pass\n") + self.check_suite("try: pass\nexcept A: pass\n") + self.check_suite("try: pass\nexcept A, e: pass\n") + self.check_suite("try: pass\nexcept A as e: pass\n") + def test_position(self): # An absolutely minimal test of position information. Better # tests would be a big project. diff --git a/Misc/NEWS b/Misc/NEWS index 828621292d..f93f5a9e7c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -20,6 +20,7 @@ Library - Issue #9075: In the ssl module, remove the setting of a ``debug`` flag on an OpenSSL structure. +- Issue #9125: Add recognition of 'except ... as ...' syntax to parser module. What's New in Python 2.7 release candidate 2? ============================================= diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c index c36fcb0719..5d1bfb6674 100644 --- a/Modules/parsermodule.c +++ b/Modules/parsermodule.c @@ -2126,10 +2126,13 @@ validate_except_clause(node *tree) if (res && (nch > 1)) res = validate_test(CHILD(tree, 1)); - if (res && (nch == 4)) - res = (validate_comma(CHILD(tree, 2)) - && validate_test(CHILD(tree, 3))); - + if (res && (nch == 4)) { + if (TYPE(CHILD(tree, 2)) == NAME) + res = validate_name(CHILD(tree, 2), "as"); + else + res = validate_comma(CHILD(tree, 2)); + res = res && validate_test(CHILD(tree, 3)); + } return (res); }