]> granicus.if.org Git - python/commitdiff
Issue #9125: Update parser module for "except ... as ..." syntax.
authorMark Dickinson <dickinsm@gmail.com>
Wed, 30 Jun 2010 16:27:57 +0000 (16:27 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Wed, 30 Jun 2010 16:27:57 +0000 (16:27 +0000)
Lib/test/test_parser.py
Misc/NEWS
Modules/parsermodule.c

index 07a4c3287c9e7af6f41e0c8095f207003e05e862..dca904cb63d4b5889ad6523b2040247dc27232e0 100644 (file)
@@ -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.
index 828621292d0b20c41969aaac080ec27726bef0b1..f93f5a9e7c4b2bf69fcf014e7f41863ab2efe054 100644 (file)
--- 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?
 =============================================
index c36fcb07193a7d7d9b347990dc5be79467c5060e..5d1bfb6674eb72f5d0eeb0b773828fcb71654011 100644 (file)
@@ -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);
 }