fix except-as syntax to match Py3
authorStefan Behnel <scoder@users.berlios.de>
Sun, 14 Mar 2010 12:55:50 +0000 (13:55 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Sun, 14 Mar 2010 12:55:50 +0000 (13:55 +0100)
Cython/Compiler/Parsing.py
tests/compile/tryexcept.pyx

index 0443b1182944d3bb800f6b2b1c6d3122c38283f3..8abd96b6709c207d60bdbef4158dea38224ba935 100644 (file)
@@ -1335,13 +1335,11 @@ def p_except_clause(s):
             s.next()
             exc_value = p_simple_expr(s)
         elif s.sy == 'IDENT' and s.systring == 'as':
-            ## XXX In Python 3, it should be:
-            ## s.next()
-            ## pos2 = s.position()
-            ## name = p_ident(s)
-            ## exc_value = ExprNodes.NameNode(pos2, name = name)
+            # Py3 syntax requires a name here
             s.next()
-            exc_value = p_simple_expr(s)
+            pos2 = s.position()
+            name = p_ident(s)
+            exc_value = ExprNodes.NameNode(pos2, name = name)
     body = p_suite(s)
     return Nodes.ExceptClauseNode(pos,
         pattern = exc_type, target = exc_value, body = body)
index 7be361bbae9cc7965003a71ac391712528ba8a41..b1fcca923b44a7fccbde5e4df23dcacb42ef4c47 100644 (file)
@@ -76,9 +76,9 @@ def g(a, b, c, x):
     
     try:
         i = 1
-    except (a, b) as c[42]:
+    except (a, b) as c:
         i = 2
-    except (b, a) as c.x:
+    except (b, a) as c:
         i = 3
     except:
         i = 4