[pypy-svn] pypy fast-forward: Update Python asdl with latest version.

amauryfa commits-noreply at bitbucket.org
Tue Jan 11 00:51:32 CET 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: fast-forward
Changeset: r40569:d94cf0941727
Date: 2011-01-11 00:51 +0100
http://bitbucket.org/pypy/pypy/changeset/d94cf0941727/

Log:	Update Python asdl with latest version. Should fix one test in
	test_ast.py

diff --git a/pypy/interpreter/astcompiler/tools/Python.asdl b/pypy/interpreter/astcompiler/tools/Python.asdl
--- a/pypy/interpreter/astcompiler/tools/Python.asdl
+++ b/pypy/interpreter/astcompiler/tools/Python.asdl
@@ -78,7 +78,7 @@
 	     | Subscript(expr value, slice slice, expr_context ctx)
 	     | Name(identifier id, expr_context ctx)
 	     | List(expr* elts, expr_context ctx) 
-	     | Tuple(expr *elts, expr_context ctx)
+	     | Tuple(expr* elts, expr_context ctx)
 
              -- PyPy modification
              | Const(object value)
@@ -104,11 +104,8 @@
 	comprehension = (expr target, expr iter, expr* ifs)
 
 	-- not sure what to call the first argument for raise and except
-	-- TODO(jhylton): Figure out if there is a better way to handle
-	--                lineno and col_offset fields, particularly when
-        --                ast is exposed to Python.
-	excepthandler = (expr? type, expr? name, stmt* body, int lineno,
-	                 int col_offset)
+	excepthandler = ExceptHandler(expr? type, expr? name, stmt* body)
+	                attributes(int lineno, int col_offset)
 
 	arguments = (expr* args, identifier? vararg, 
 		     identifier? kwarg, expr* defaults)

diff --git a/pypy/interpreter/astcompiler/ast.py b/pypy/interpreter/astcompiler/ast.py
--- a/pypy/interpreter/astcompiler/ast.py
+++ b/pypy/interpreter/astcompiler/ast.py
@@ -2474,17 +2474,30 @@
 
 class excepthandler(AST):
 
-    __slots__ = ('type', 'name', 'body', 'w_body', 'lineno', 'col_offset')
+    __slots__ = ('lineno', 'col_offset')
+
+    def __init__(self, lineno, col_offset):
+        self.lineno = lineno
+        self.col_offset = col_offset
+
+class ExceptHandler(excepthandler):
+
+    __slots__ = ('type', 'name', 'body', 'w_body')
+
+    _lineno_mask = 8
+    _col_offset_mask = 16
 
     def __init__(self, type, name, body, lineno, col_offset):
         self.type = type
         self.name = name
         self.body = body
         self.w_body = None
-        self.lineno = lineno
-        self.col_offset = col_offset
+        excepthandler.__init__(self, lineno, col_offset)
         self.initialization_state = 31
 
+    def walkabout(self, visitor):
+        visitor.visit_ExceptHandler(self)
+
     def mutate_over(self, visitor):
         if self.type:
             self.type = self.type.mutate_over(visitor)
@@ -2492,14 +2505,11 @@
             self.name = self.name.mutate_over(visitor)
         if self.body:
             visitor._mutate_sequence(self.body)
-        return visitor.visit_excepthandler(self)
-
-    def walkabout(self, visitor):
-        visitor.visit_excepthandler(self)
+        return visitor.visit_ExceptHandler(self)
 
     def sync_app_attrs(self, space):
         if (self.initialization_state & ~3) ^ 28:
-            missing_field(space, self.initialization_state, [None, None, 'body', 'lineno', 'col_offset'], 'excepthandler')
+            missing_field(space, self.initialization_state, [None, None, 'body', 'lineno', 'col_offset'], 'ExceptHandler')
         else:
             if not self.initialization_state & 1:
                 self.type = None
@@ -2520,6 +2530,7 @@
             for node in self.body:
                 node.sync_app_attrs(space)
 
+
 class arguments(AST):
 
     __slots__ = ('args', 'w_args', 'vararg', 'kwarg', 'defaults', 'w_defaults')
@@ -2740,7 +2751,7 @@
         return self.default_visitor(node)
     def visit_comprehension(self, node):
         return self.default_visitor(node)
-    def visit_excepthandler(self, node):
+    def visit_ExceptHandler(self, node):
         return self.default_visitor(node)
     def visit_arguments(self, node):
         return self.default_visitor(node)
@@ -3015,7 +3026,7 @@
         if node.ifs:
             self.visit_sequence(node.ifs)
 
-    def visit_excepthandler(self, node):
+    def visit_ExceptHandler(self, node):
         if node.type:
             node.type.walkabout(self)
         if node.name:
@@ -6259,27 +6270,55 @@
 )
 comprehension.typedef.acceptable_as_base_class = False
 
-def excepthandler_get_type(space, w_self):
+def excepthandler_get_lineno(space, w_self):
+    if not w_self.initialization_state & w_self._lineno_mask:
+        w_err = space.wrap("attribute 'lineno' has not been set")
+        raise OperationError(space.w_AttributeError, w_err)
+    return space.wrap(w_self.lineno)
+
+def excepthandler_set_lineno(space, w_self, w_new_value):
+    w_self.lineno = space.int_w(w_new_value)
+    w_self.initialization_state |= w_self._lineno_mask
+
+def excepthandler_get_col_offset(space, w_self):
+    if not w_self.initialization_state & w_self._col_offset_mask:
+        w_err = space.wrap("attribute 'col_offset' has not been set")
+        raise OperationError(space.w_AttributeError, w_err)
+    return space.wrap(w_self.col_offset)
+
+def excepthandler_set_col_offset(space, w_self, w_new_value):
+    w_self.col_offset = space.int_w(w_new_value)
+    w_self.initialization_state |= w_self._col_offset_mask
+
+excepthandler.typedef = typedef.TypeDef("excepthandler",
+    AST.typedef,
+    _attributes=_FieldsWrapper(['lineno', 'col_offset']),
+    lineno=typedef.GetSetProperty(excepthandler_get_lineno, excepthandler_set_lineno, cls=excepthandler),
+    col_offset=typedef.GetSetProperty(excepthandler_get_col_offset, excepthandler_set_col_offset, cls=excepthandler),
+)
+excepthandler.typedef.acceptable_as_base_class = False
+
+def ExceptHandler_get_type(space, w_self):
     if not w_self.initialization_state & 1:
         w_err = space.wrap("attribute 'type' has not been set")
         raise OperationError(space.w_AttributeError, w_err)
     return space.wrap(w_self.type)
 
-def excepthandler_set_type(space, w_self, w_new_value):
+def ExceptHandler_set_type(space, w_self, w_new_value):
     w_self.type = space.interp_w(expr, w_new_value, True)
     w_self.initialization_state |= 1
 
-def excepthandler_get_name(space, w_self):
+def ExceptHandler_get_name(space, w_self):
     if not w_self.initialization_state & 2:
         w_err = space.wrap("attribute 'name' has not been set")
         raise OperationError(space.w_AttributeError, w_err)
     return space.wrap(w_self.name)
 
-def excepthandler_set_name(space, w_self, w_new_value):
+def ExceptHandler_set_name(space, w_self, w_new_value):
     w_self.name = space.interp_w(expr, w_new_value, True)
     w_self.initialization_state |= 2
 
-def excepthandler_get_body(space, w_self):
+def ExceptHandler_get_body(space, w_self):
     if not w_self.initialization_state & 4:
         w_err = space.wrap("attribute 'body' has not been set")
         raise OperationError(space.w_AttributeError, w_err)
@@ -6292,59 +6331,37 @@
         w_self.w_body = w_list
     return w_self.w_body
 
-def excepthandler_set_body(space, w_self, w_new_value):
+def ExceptHandler_set_body(space, w_self, w_new_value):
     w_self.w_body = w_new_value
     w_self.initialization_state |= 4
 
-def excepthandler_get_lineno(space, w_self):
-    if not w_self.initialization_state & 8:
-        w_err = space.wrap("attribute 'lineno' has not been set")
-        raise OperationError(space.w_AttributeError, w_err)
-    return space.wrap(w_self.lineno)
-
-def excepthandler_set_lineno(space, w_self, w_new_value):
-    w_self.lineno = space.int_w(w_new_value)
-    w_self.initialization_state |= 8
-
-def excepthandler_get_col_offset(space, w_self):
-    if not w_self.initialization_state & 16:
-        w_err = space.wrap("attribute 'col_offset' has not been set")
-        raise OperationError(space.w_AttributeError, w_err)
-    return space.wrap(w_self.col_offset)
-
-def excepthandler_set_col_offset(space, w_self, w_new_value):
-    w_self.col_offset = space.int_w(w_new_value)
-    w_self.initialization_state |= 16
-
-_excepthandler_field_unroller = unrolling_iterable(['type', 'name', 'body', 'lineno', 'col_offset'])
-def excepthandler_init(space, w_self, args):
-    w_self = space.descr_self_interp_w(excepthandler, w_self)
+_ExceptHandler_field_unroller = unrolling_iterable(['type', 'name', 'body', 'lineno', 'col_offset'])
+def ExceptHandler_init(space, w_self, args):
+    w_self = space.descr_self_interp_w(ExceptHandler, w_self)
     w_self.w_body = None
     args_w, kwargs_w = args.unpack()
     if args_w:
         if len(args_w) != 5:
-            w_err = space.wrap("excepthandler constructor takes 0 or 5 positional arguments")
+            w_err = space.wrap("ExceptHandler constructor takes 0 or 5 positional arguments")
             raise OperationError(space.w_TypeError, w_err)
         i = 0
-        for field in _excepthandler_field_unroller:
+        for field in _ExceptHandler_field_unroller:
             space.setattr(w_self, space.wrap(field), args_w[i])
             i += 1
     for field, w_value in kwargs_w.iteritems():
         space.setattr(w_self, space.wrap(field), w_value)
-excepthandler_init.unwrap_spec = [ObjSpace, W_Root, Arguments]
-
-excepthandler.typedef = typedef.TypeDef("excepthandler",
-    AST.typedef,
-    _fields=_FieldsWrapper(['type', 'name', 'body', 'lineno', 'col_offset']),
-    type=typedef.GetSetProperty(excepthandler_get_type, excepthandler_set_type, cls=excepthandler),
-    name=typedef.GetSetProperty(excepthandler_get_name, excepthandler_set_name, cls=excepthandler),
-    body=typedef.GetSetProperty(excepthandler_get_body, excepthandler_set_body, cls=excepthandler),
-    lineno=typedef.GetSetProperty(excepthandler_get_lineno, excepthandler_set_lineno, cls=excepthandler),
-    col_offset=typedef.GetSetProperty(excepthandler_get_col_offset, excepthandler_set_col_offset, cls=excepthandler),
-    __new__=interp2app(get_AST_new(excepthandler)),
-    __init__=interp2app(excepthandler_init),
+ExceptHandler_init.unwrap_spec = [ObjSpace, W_Root, Arguments]
+
+ExceptHandler.typedef = typedef.TypeDef("ExceptHandler",
+    excepthandler.typedef,
+    _fields=_FieldsWrapper(['type', 'name', 'body']),
+    type=typedef.GetSetProperty(ExceptHandler_get_type, ExceptHandler_set_type, cls=ExceptHandler),
+    name=typedef.GetSetProperty(ExceptHandler_get_name, ExceptHandler_set_name, cls=ExceptHandler),
+    body=typedef.GetSetProperty(ExceptHandler_get_body, ExceptHandler_set_body, cls=ExceptHandler),
+    __new__=interp2app(get_AST_new(ExceptHandler)),
+    __init__=interp2app(ExceptHandler_init),
 )
-excepthandler.typedef.acceptable_as_base_class = False
+ExceptHandler.typedef.acceptable_as_base_class = False
 
 def arguments_get_args(space, w_self):
     if not w_self.initialization_state & 1:


More information about the Pypy-commit mailing list