From 9f11f397586b4cc596a9771350daed7f5e8e3e54 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Wed, 30 Jun 2010 16:33:23 +0000 Subject: Merged revisions 82400 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r82400 | mark.dickinson | 2010-06-30 17:27:57 +0100 (Wed, 30 Jun 2010) | 2 lines Issue #9125: Update parser module for "except ... as ..." syntax. ........ --- Lib/test/test_parser.py | 6 ++++++ Misc/NEWS | 2 ++ Modules/parsermodule.c | 11 +++++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py index 23f418e..ca5f43f 100644 --- a/Lib/test/test_parser.py +++ b/Lib/test/test_parser.py @@ -210,6 +210,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 9bbd19f..bb74536 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -73,6 +73,8 @@ C-API Library ------- +- Issue #9125: Add recognition of 'except ... as ...' syntax to parser module. + - Issue #9085: email package version number bumped to its correct value of 4.0.2 (same as it was in 2.5). diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c index 425d97f..365ec90 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); } -- cgit v0.12