[pypy-commit] pypy py3k: regenerate ast.py

pjenvey noreply at buildbot.pypy.org
Tue Aug 26 19:58:24 CEST 2014


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r73067:276f1b668967
Date: 2014-08-24 15:55 -0700
http://bitbucket.org/pypy/pypy/changeset/276f1b668967/

Log:	regenerate ast.py

diff too long, truncating to 2000 out of 6594 lines

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
@@ -321,8 +321,6 @@
             return Assign.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_AugAssign):
             return AugAssign.from_object(space, w_node)
-        if space.isinstance_w(w_node, get(space).w_Print):
-            return Print.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_For):
             return For.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_While):
@@ -343,10 +341,10 @@
             return Import.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_ImportFrom):
             return ImportFrom.from_object(space, w_node)
-        if space.isinstance_w(w_node, get(space).w_Exec):
-            return Exec.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Global):
             return Global.from_object(space, w_node)
+        if space.isinstance_w(w_node, get(space).w_Nonlocal):
+            return Nonlocal.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Expr):
             return Expr.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Pass):
@@ -366,16 +364,8 @@
         self.args = args
         self.body = body
         self.decorator_list = decorator_list
-<<<<<<< mine
-        self.w_decorator_list = None
         self.returns = returns
-=======
->>>>>>> theirs
         stmt.__init__(self, lineno, col_offset)
-<<<<<<< mine
-        self.initialization_state = 127
-=======
->>>>>>> theirs
 
     def walkabout(self, visitor):
         visitor.visit_FunctionDef(self)
@@ -390,37 +380,6 @@
             self.returns = self.returns.mutate_over(visitor)
         return visitor.visit_FunctionDef(self)
 
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~64) ^ 63:
-            self.missing_field(space, ['lineno', 'col_offset', 'name', 'args', 'body', 'decorator_list', None], 'FunctionDef')
-        else:
-            if not self.initialization_state & 64:
-                self.returns = None
-        self.args.sync_app_attrs(space)
-        w_list = self.w_body
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.body = [space.interp_w(stmt, w_obj) for w_obj in list_w]
-            else:
-                self.body = None
-        if self.body is not None:
-            for node in self.body:
-                node.sync_app_attrs(space)
-        w_list = self.w_decorator_list
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.decorator_list = [space.interp_w(expr, w_obj) for w_obj in list_w]
-            else:
-                self.decorator_list = None
-        if self.decorator_list is not None:
-            for node in self.decorator_list:
-                node.sync_app_attrs(space)
-        if self.returns:
-            self.returns.sync_app_attrs(space)
-=======
     def to_object(self, space):
         w_node = space.call_function(get(space).w_FunctionDef)
         w_name = space.wrap(self.name)  # identifier
@@ -439,6 +398,8 @@
             decorator_list_w = [node.to_object(space) for node in self.decorator_list] # expr
         w_decorator_list = space.newlist(decorator_list_w)
         space.setattr(w_node, space.wrap('decorator_list'), w_decorator_list)
+        w_returns = self.returns.to_object(space) if self.returns is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('returns'), w_returns)
         w_lineno = space.wrap(self.lineno)  # int
         space.setattr(w_node, space.wrap('lineno'), w_lineno)
         w_col_offset = space.wrap(self.col_offset)  # int
@@ -451,6 +412,7 @@
         w_args = get_field(space, w_node, 'args', False)
         w_body = get_field(space, w_node, 'body', False)
         w_decorator_list = get_field(space, w_node, 'decorator_list', False)
+        w_returns = get_field(space, w_node, 'returns', True)
         w_lineno = get_field(space, w_node, 'lineno', False)
         w_col_offset = get_field(space, w_node, 'col_offset', False)
         _name = space.realstr_w(w_name)
@@ -459,12 +421,12 @@
         _body = [stmt.from_object(space, w_item) for w_item in body_w]
         decorator_list_w = space.unpackiterable(w_decorator_list)
         _decorator_list = [expr.from_object(space, w_item) for w_item in decorator_list_w]
+        _returns = expr.from_object(space, w_returns)
         _lineno = space.int_w(w_lineno)
         _col_offset = space.int_w(w_col_offset)
-        return FunctionDef(_name, _args, _body, _decorator_list, _lineno, _col_offset)
-
-State.ast_type('FunctionDef', 'stmt', ['name', 'args', 'body', 'decorator_list'])
->>>>>>> theirs
+        return FunctionDef(_name, _args, _body, _decorator_list, _returns, _lineno, _col_offset)
+
+State.ast_type('FunctionDef', 'stmt', ['name', 'args', 'body', 'decorator_list', 'returns'])
 
 
 class ClassDef(stmt):
@@ -472,21 +434,12 @@
     def __init__(self, name, bases, keywords, starargs, kwargs, body, decorator_list, lineno, col_offset):
         self.name = name
         self.bases = bases
-<<<<<<< mine
-        self.w_bases = None
         self.keywords = keywords
-        self.w_keywords = None
         self.starargs = starargs
         self.kwargs = kwargs
-=======
->>>>>>> theirs
         self.body = body
         self.decorator_list = decorator_list
         stmt.__init__(self, lineno, col_offset)
-<<<<<<< mine
-        self.initialization_state = 511
-=======
->>>>>>> theirs
 
     def walkabout(self, visitor):
         visitor.visit_ClassDef(self)
@@ -506,60 +459,6 @@
             visitor._mutate_sequence(self.decorator_list)
         return visitor.visit_ClassDef(self)
 
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~96) ^ 415:
-            self.missing_field(space, ['lineno', 'col_offset', 'name', 'bases', 'keywords', None, None, 'body', 'decorator_list'], 'ClassDef')
-        else:
-            if not self.initialization_state & 32:
-                self.starargs = None
-            if not self.initialization_state & 64:
-                self.kwargs = None
-        w_list = self.w_bases
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.bases = [space.interp_w(expr, w_obj) for w_obj in list_w]
-            else:
-                self.bases = None
-        if self.bases is not None:
-            for node in self.bases:
-                node.sync_app_attrs(space)
-        w_list = self.w_keywords
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.keywords = [space.interp_w(keyword, w_obj) for w_obj in list_w]
-            else:
-                self.keywords = None
-        if self.keywords is not None:
-            for node in self.keywords:
-                node.sync_app_attrs(space)
-        if self.starargs:
-            self.starargs.sync_app_attrs(space)
-        if self.kwargs:
-            self.kwargs.sync_app_attrs(space)
-        w_list = self.w_body
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.body = [space.interp_w(stmt, w_obj) for w_obj in list_w]
-            else:
-                self.body = None
-        if self.body is not None:
-            for node in self.body:
-                node.sync_app_attrs(space)
-        w_list = self.w_decorator_list
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.decorator_list = [space.interp_w(expr, w_obj) for w_obj in list_w]
-            else:
-                self.decorator_list = None
-        if self.decorator_list is not None:
-            for node in self.decorator_list:
-                node.sync_app_attrs(space)
-=======
     def to_object(self, space):
         w_node = space.call_function(get(space).w_ClassDef)
         w_name = space.wrap(self.name)  # identifier
@@ -570,6 +469,16 @@
             bases_w = [node.to_object(space) for node in self.bases] # expr
         w_bases = space.newlist(bases_w)
         space.setattr(w_node, space.wrap('bases'), w_bases)
+        if self.keywords is None:
+            keywords_w = []
+        else:
+            keywords_w = [node.to_object(space) for node in self.keywords] # keyword
+        w_keywords = space.newlist(keywords_w)
+        space.setattr(w_node, space.wrap('keywords'), w_keywords)
+        w_starargs = self.starargs.to_object(space) if self.starargs is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('starargs'), w_starargs)
+        w_kwargs = self.kwargs.to_object(space) if self.kwargs is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('kwargs'), w_kwargs)
         if self.body is None:
             body_w = []
         else:
@@ -592,6 +501,9 @@
     def from_object(space, w_node):
         w_name = get_field(space, w_node, 'name', False)
         w_bases = get_field(space, w_node, 'bases', False)
+        w_keywords = get_field(space, w_node, 'keywords', False)
+        w_starargs = get_field(space, w_node, 'starargs', True)
+        w_kwargs = get_field(space, w_node, 'kwargs', True)
         w_body = get_field(space, w_node, 'body', False)
         w_decorator_list = get_field(space, w_node, 'decorator_list', False)
         w_lineno = get_field(space, w_node, 'lineno', False)
@@ -599,16 +511,19 @@
         _name = space.realstr_w(w_name)
         bases_w = space.unpackiterable(w_bases)
         _bases = [expr.from_object(space, w_item) for w_item in bases_w]
+        keywords_w = space.unpackiterable(w_keywords)
+        _keywords = [keyword.from_object(space, w_item) for w_item in keywords_w]
+        _starargs = expr.from_object(space, w_starargs)
+        _kwargs = expr.from_object(space, w_kwargs)
         body_w = space.unpackiterable(w_body)
         _body = [stmt.from_object(space, w_item) for w_item in body_w]
         decorator_list_w = space.unpackiterable(w_decorator_list)
         _decorator_list = [expr.from_object(space, w_item) for w_item in decorator_list_w]
         _lineno = space.int_w(w_lineno)
         _col_offset = space.int_w(w_col_offset)
-        return ClassDef(_name, _bases, _body, _decorator_list, _lineno, _col_offset)
-
-State.ast_type('ClassDef', 'stmt', ['name', 'bases', 'body', 'decorator_list'])
->>>>>>> theirs
+        return ClassDef(_name, _bases, _keywords, _starargs, _kwargs, _body, _decorator_list, _lineno, _col_offset)
+
+State.ast_type('ClassDef', 'stmt', ['name', 'bases', 'keywords', 'starargs', 'kwargs', 'body', 'decorator_list'])
 
 
 class Return(stmt):
@@ -785,63 +700,6 @@
 State.ast_type('AugAssign', 'stmt', ['target', 'op', 'value'])
 
 
-<<<<<<< mine
-=======
-class Print(stmt):
-
-    def __init__(self, dest, values, nl, lineno, col_offset):
-        self.dest = dest
-        self.values = values
-        self.nl = nl
-        stmt.__init__(self, lineno, col_offset)
-
-    def walkabout(self, visitor):
-        visitor.visit_Print(self)
-
-    def mutate_over(self, visitor):
-        if self.dest:
-            self.dest = self.dest.mutate_over(visitor)
-        if self.values:
-            visitor._mutate_sequence(self.values)
-        return visitor.visit_Print(self)
-
-    def to_object(self, space):
-        w_node = space.call_function(get(space).w_Print)
-        w_dest = self.dest.to_object(space) if self.dest is not None else space.w_None  # expr
-        space.setattr(w_node, space.wrap('dest'), w_dest)
-        if self.values is None:
-            values_w = []
-        else:
-            values_w = [node.to_object(space) for node in self.values] # expr
-        w_values = space.newlist(values_w)
-        space.setattr(w_node, space.wrap('values'), w_values)
-        w_nl = space.wrap(self.nl)  # bool
-        space.setattr(w_node, space.wrap('nl'), w_nl)
-        w_lineno = space.wrap(self.lineno)  # int
-        space.setattr(w_node, space.wrap('lineno'), w_lineno)
-        w_col_offset = space.wrap(self.col_offset)  # int
-        space.setattr(w_node, space.wrap('col_offset'), w_col_offset)
-        return w_node
-
-    @staticmethod
-    def from_object(space, w_node):
-        w_dest = get_field(space, w_node, 'dest', True)
-        w_values = get_field(space, w_node, 'values', False)
-        w_nl = get_field(space, w_node, 'nl', False)
-        w_lineno = get_field(space, w_node, 'lineno', False)
-        w_col_offset = get_field(space, w_node, 'col_offset', False)
-        _dest = expr.from_object(space, w_dest)
-        values_w = space.unpackiterable(w_values)
-        _values = [expr.from_object(space, w_item) for w_item in values_w]
-        _nl = space.bool_w(w_nl)
-        _lineno = space.int_w(w_lineno)
-        _col_offset = space.int_w(w_col_offset)
-        return Print(_dest, _values, _nl, _lineno, _col_offset)
-
-State.ast_type('Print', 'stmt', ['dest', 'values', 'nl'])
-
-
->>>>>>> theirs
 class For(stmt):
 
     def __init__(self, target, iter, body, orelse, lineno, col_offset):
@@ -1089,10 +947,6 @@
         self.exc = exc
         self.cause = cause
         stmt.__init__(self, lineno, col_offset)
-<<<<<<< mine
-        self.initialization_state = 15
-=======
->>>>>>> theirs
 
     def walkabout(self, visitor):
         visitor.visit_Raise(self)
@@ -1104,28 +958,12 @@
             self.cause = self.cause.mutate_over(visitor)
         return visitor.visit_Raise(self)
 
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~12) ^ 3:
-            self.missing_field(space, ['lineno', 'col_offset', None, None], 'Raise')
-        else:
-            if not self.initialization_state & 4:
-                self.exc = None
-            if not self.initialization_state & 8:
-                self.cause = None
-        if self.exc:
-            self.exc.sync_app_attrs(space)
-        if self.cause:
-            self.cause.sync_app_attrs(space)
-=======
     def to_object(self, space):
         w_node = space.call_function(get(space).w_Raise)
-        w_type = self.type.to_object(space) if self.type is not None else space.w_None  # expr
-        space.setattr(w_node, space.wrap('type'), w_type)
-        w_inst = self.inst.to_object(space) if self.inst is not None else space.w_None  # expr
-        space.setattr(w_node, space.wrap('inst'), w_inst)
-        w_tback = self.tback.to_object(space) if self.tback is not None else space.w_None  # expr
-        space.setattr(w_node, space.wrap('tback'), w_tback)
+        w_exc = self.exc.to_object(space) if self.exc is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('exc'), w_exc)
+        w_cause = self.cause.to_object(space) if self.cause is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('cause'), w_cause)
         w_lineno = space.wrap(self.lineno)  # int
         space.setattr(w_node, space.wrap('lineno'), w_lineno)
         w_col_offset = space.wrap(self.col_offset)  # int
@@ -1134,20 +972,17 @@
 
     @staticmethod
     def from_object(space, w_node):
-        w_type = get_field(space, w_node, 'type', True)
-        w_inst = get_field(space, w_node, 'inst', True)
-        w_tback = get_field(space, w_node, 'tback', True)
+        w_exc = get_field(space, w_node, 'exc', True)
+        w_cause = get_field(space, w_node, 'cause', True)
         w_lineno = get_field(space, w_node, 'lineno', False)
         w_col_offset = get_field(space, w_node, 'col_offset', False)
-        _type = expr.from_object(space, w_type)
-        _inst = expr.from_object(space, w_inst)
-        _tback = expr.from_object(space, w_tback)
+        _exc = expr.from_object(space, w_exc)
+        _cause = expr.from_object(space, w_cause)
         _lineno = space.int_w(w_lineno)
         _col_offset = space.int_w(w_col_offset)
-        return Raise(_type, _inst, _tback, _lineno, _col_offset)
-
-State.ast_type('Raise', 'stmt', ['type', 'inst', 'tback'])
->>>>>>> theirs
+        return Raise(_exc, _cause, _lineno, _col_offset)
+
+State.ast_type('Raise', 'stmt', ['exc', 'cause'])
 
 
 class TryExcept(stmt):
@@ -1411,12 +1246,7 @@
 
     def __init__(self, names, lineno, col_offset):
         self.names = names
-        self.w_names = None
         stmt.__init__(self, lineno, col_offset)
-<<<<<<< mine
-        self.initialization_state = 7
-=======
->>>>>>> theirs
 
     def walkabout(self, visitor):
         visitor.visit_Global(self)
@@ -1424,78 +1254,6 @@
     def mutate_over(self, visitor):
         return visitor.visit_Global(self)
 
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~0) ^ 7:
-            self.missing_field(space, ['lineno', 'col_offset', 'names'], 'Global')
-        else:
-            pass
-        w_list = self.w_names
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.names = [space.identifier_w(w_obj) for w_obj in list_w]
-            else:
-                self.names = None
-=======
-    def to_object(self, space):
-        w_node = space.call_function(get(space).w_Exec)
-        w_body = self.body.to_object(space)  # expr
-        space.setattr(w_node, space.wrap('body'), w_body)
-        w_globals = self.globals.to_object(space) if self.globals is not None else space.w_None  # expr
-        space.setattr(w_node, space.wrap('globals'), w_globals)
-        w_locals = self.locals.to_object(space) if self.locals is not None else space.w_None  # expr
-        space.setattr(w_node, space.wrap('locals'), w_locals)
-        w_lineno = space.wrap(self.lineno)  # int
-        space.setattr(w_node, space.wrap('lineno'), w_lineno)
-        w_col_offset = space.wrap(self.col_offset)  # int
-        space.setattr(w_node, space.wrap('col_offset'), w_col_offset)
-        return w_node
-
-    @staticmethod
-    def from_object(space, w_node):
-        w_body = get_field(space, w_node, 'body', False)
-        w_globals = get_field(space, w_node, 'globals', True)
-        w_locals = get_field(space, w_node, 'locals', True)
-        w_lineno = get_field(space, w_node, 'lineno', False)
-        w_col_offset = get_field(space, w_node, 'col_offset', False)
-        _body = expr.from_object(space, w_body)
-        _globals = expr.from_object(space, w_globals)
-        _locals = expr.from_object(space, w_locals)
-        _lineno = space.int_w(w_lineno)
-        _col_offset = space.int_w(w_col_offset)
-        return Exec(_body, _globals, _locals, _lineno, _col_offset)
-
-State.ast_type('Exec', 'stmt', ['body', 'globals', 'locals'])
->>>>>>> theirs
-
-
-class Nonlocal(stmt):
-
-    def __init__(self, names, lineno, col_offset):
-        self.names = names
-        stmt.__init__(self, lineno, col_offset)
-
-    def walkabout(self, visitor):
-        visitor.visit_Nonlocal(self)
-
-    def mutate_over(self, visitor):
-        return visitor.visit_Nonlocal(self)
-
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~0) ^ 7:
-            self.missing_field(space, ['lineno', 'col_offset', 'names'], 'Nonlocal')
-        else:
-            pass
-        w_list = self.w_names
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.names = [space.identifier_w(w_obj) for w_obj in list_w]
-            else:
-                self.names = None
-=======
     def to_object(self, space):
         w_node = space.call_function(get(space).w_Global)
         if self.names is None:
@@ -1522,7 +1280,46 @@
         return Global(_names, _lineno, _col_offset)
 
 State.ast_type('Global', 'stmt', ['names'])
->>>>>>> theirs
+
+
+class Nonlocal(stmt):
+
+    def __init__(self, names, lineno, col_offset):
+        self.names = names
+        stmt.__init__(self, lineno, col_offset)
+
+    def walkabout(self, visitor):
+        visitor.visit_Nonlocal(self)
+
+    def mutate_over(self, visitor):
+        return visitor.visit_Nonlocal(self)
+
+    def to_object(self, space):
+        w_node = space.call_function(get(space).w_Nonlocal)
+        if self.names is None:
+            names_w = []
+        else:
+            names_w = [space.wrap(node) for node in self.names] # identifier
+        w_names = space.newlist(names_w)
+        space.setattr(w_node, space.wrap('names'), w_names)
+        w_lineno = space.wrap(self.lineno)  # int
+        space.setattr(w_node, space.wrap('lineno'), w_lineno)
+        w_col_offset = space.wrap(self.col_offset)  # int
+        space.setattr(w_node, space.wrap('col_offset'), w_col_offset)
+        return w_node
+
+    @staticmethod
+    def from_object(space, w_node):
+        w_names = get_field(space, w_node, 'names', False)
+        w_lineno = get_field(space, w_node, 'lineno', False)
+        w_col_offset = get_field(space, w_node, 'col_offset', False)
+        names_w = space.unpackiterable(w_names)
+        _names = [space.realstr_w(w_item) for w_item in names_w]
+        _lineno = space.int_w(w_lineno)
+        _col_offset = space.int_w(w_col_offset)
+        return Nonlocal(_names, _lineno, _col_offset)
+
+State.ast_type('Nonlocal', 'stmt', ['names'])
 
 
 class Expr(stmt):
@@ -1689,16 +1486,20 @@
             return Compare.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Call):
             return Call.from_object(space, w_node)
-        if space.isinstance_w(w_node, get(space).w_Repr):
-            return Repr.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Num):
             return Num.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Str):
             return Str.from_object(space, w_node)
+        if space.isinstance_w(w_node, get(space).w_Bytes):
+            return Bytes.from_object(space, w_node)
+        if space.isinstance_w(w_node, get(space).w_Ellipsis):
+            return Ellipsis.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Attribute):
             return Attribute.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Subscript):
             return Subscript.from_object(space, w_node)
+        if space.isinstance_w(w_node, get(space).w_Starred):
+            return Starred.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Name):
             return Name.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_List):
@@ -2411,56 +2212,6 @@
     def mutate_over(self, visitor):
         return visitor.visit_Num(self)
 
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~0) ^ 7:
-            self.missing_field(space, ['lineno', 'col_offset', 'n'], 'Num')
-        else:
-            pass
-=======
-    def to_object(self, space):
-        w_node = space.call_function(get(space).w_Repr)
-        w_value = self.value.to_object(space)  # expr
-        space.setattr(w_node, space.wrap('value'), w_value)
-        w_lineno = space.wrap(self.lineno)  # int
-        space.setattr(w_node, space.wrap('lineno'), w_lineno)
-        w_col_offset = space.wrap(self.col_offset)  # int
-        space.setattr(w_node, space.wrap('col_offset'), w_col_offset)
-        return w_node
-
-    @staticmethod
-    def from_object(space, w_node):
-        w_value = get_field(space, w_node, 'value', False)
-        w_lineno = get_field(space, w_node, 'lineno', False)
-        w_col_offset = get_field(space, w_node, 'col_offset', False)
-        _value = expr.from_object(space, w_value)
-        _lineno = space.int_w(w_lineno)
-        _col_offset = space.int_w(w_col_offset)
-        return Repr(_value, _lineno, _col_offset)
-
-State.ast_type('Repr', 'expr', ['value'])
->>>>>>> theirs
-
-
-class Str(expr):
-
-    def __init__(self, s, lineno, col_offset):
-        self.s = s
-        expr.__init__(self, lineno, col_offset)
-
-    def walkabout(self, visitor):
-        visitor.visit_Str(self)
-
-    def mutate_over(self, visitor):
-        return visitor.visit_Str(self)
-
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~0) ^ 7:
-            self.missing_field(space, ['lineno', 'col_offset', 's'], 'Str')
-        else:
-            pass
-=======
     def to_object(self, space):
         w_node = space.call_function(get(space).w_Num)
         w_n = self.n  # object
@@ -2482,47 +2233,20 @@
         return Num(_n, _lineno, _col_offset)
 
 State.ast_type('Num', 'expr', ['n'])
->>>>>>> theirs
-
-
-class Bytes(expr):
+
+
+class Str(expr):
 
     def __init__(self, s, lineno, col_offset):
         self.s = s
         expr.__init__(self, lineno, col_offset)
 
     def walkabout(self, visitor):
-        visitor.visit_Bytes(self)
+        visitor.visit_Str(self)
 
     def mutate_over(self, visitor):
-        return visitor.visit_Bytes(self)
-
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~0) ^ 7:
-            self.missing_field(space, ['lineno', 'col_offset', 's'], 'Bytes')
-        else:
-            pass
-
-
-class Ellipsis(expr):
-
-    def __init__(self, lineno, col_offset):
-        expr.__init__(self, lineno, col_offset)
-        self.initialization_state = 3
-
-    def walkabout(self, visitor):
-        visitor.visit_Ellipsis(self)
-
-    def mutate_over(self, visitor):
-        return visitor.visit_Ellipsis(self)
-
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~0) ^ 3:
-            self.missing_field(space, ['lineno', 'col_offset'], 'Ellipsis')
-        else:
-            pass
-=======
+        return visitor.visit_Str(self)
+
     def to_object(self, space):
         w_node = space.call_function(get(space).w_Str)
         w_s = self.s  # string
@@ -2544,7 +2268,71 @@
         return Str(_s, _lineno, _col_offset)
 
 State.ast_type('Str', 'expr', ['s'])
->>>>>>> theirs
+
+
+class Bytes(expr):
+
+    def __init__(self, s, lineno, col_offset):
+        self.s = s
+        expr.__init__(self, lineno, col_offset)
+
+    def walkabout(self, visitor):
+        visitor.visit_Bytes(self)
+
+    def mutate_over(self, visitor):
+        return visitor.visit_Bytes(self)
+
+    def to_object(self, space):
+        w_node = space.call_function(get(space).w_Bytes)
+        w_s = self.s  # string
+        space.setattr(w_node, space.wrap('s'), w_s)
+        w_lineno = space.wrap(self.lineno)  # int
+        space.setattr(w_node, space.wrap('lineno'), w_lineno)
+        w_col_offset = space.wrap(self.col_offset)  # int
+        space.setattr(w_node, space.wrap('col_offset'), w_col_offset)
+        return w_node
+
+    @staticmethod
+    def from_object(space, w_node):
+        w_s = get_field(space, w_node, 's', False)
+        w_lineno = get_field(space, w_node, 'lineno', False)
+        w_col_offset = get_field(space, w_node, 'col_offset', False)
+        _s = check_string(space, w_s)
+        _lineno = space.int_w(w_lineno)
+        _col_offset = space.int_w(w_col_offset)
+        return Bytes(_s, _lineno, _col_offset)
+
+State.ast_type('Bytes', 'expr', ['s'])
+
+
+class Ellipsis(expr):
+
+    def __init__(self, lineno, col_offset):
+        expr.__init__(self, lineno, col_offset)
+
+    def walkabout(self, visitor):
+        visitor.visit_Ellipsis(self)
+
+    def mutate_over(self, visitor):
+        return visitor.visit_Ellipsis(self)
+
+    def to_object(self, space):
+        w_node = space.call_function(get(space).w_Ellipsis)
+        w_lineno = space.wrap(self.lineno)  # int
+        space.setattr(w_node, space.wrap('lineno'), w_lineno)
+        w_col_offset = space.wrap(self.col_offset)  # int
+        space.setattr(w_node, space.wrap('col_offset'), w_col_offset)
+        return w_node
+
+    @staticmethod
+    def from_object(space, w_node):
+        w_lineno = get_field(space, w_node, 'lineno', False)
+        w_col_offset = get_field(space, w_node, 'col_offset', False)
+        _lineno = space.int_w(w_lineno)
+        _col_offset = space.int_w(w_col_offset)
+        return Ellipsis(_lineno, _col_offset)
+
+State.ast_type('Ellipsis', 'expr', [])
 
 
 class Attribute(expr):
@@ -2646,7 +2434,6 @@
         self.value = value
         self.ctx = ctx
         expr.__init__(self, lineno, col_offset)
-        self.initialization_state = 15
 
     def walkabout(self, visitor):
         visitor.visit_Starred(self)
@@ -2655,12 +2442,31 @@
         self.value = self.value.mutate_over(visitor)
         return visitor.visit_Starred(self)
 
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~0) ^ 15:
-            self.missing_field(space, ['lineno', 'col_offset', 'value', 'ctx'], 'Starred')
-        else:
-            pass
-        self.value.sync_app_attrs(space)
+    def to_object(self, space):
+        w_node = space.call_function(get(space).w_Starred)
+        w_value = self.value.to_object(space)  # expr
+        space.setattr(w_node, space.wrap('value'), w_value)
+        w_ctx = expr_context_to_class[self.ctx - 1]().to_object(space)  # expr_context
+        space.setattr(w_node, space.wrap('ctx'), w_ctx)
+        w_lineno = space.wrap(self.lineno)  # int
+        space.setattr(w_node, space.wrap('lineno'), w_lineno)
+        w_col_offset = space.wrap(self.col_offset)  # int
+        space.setattr(w_node, space.wrap('col_offset'), w_col_offset)
+        return w_node
+
+    @staticmethod
+    def from_object(space, w_node):
+        w_value = get_field(space, w_node, 'value', False)
+        w_ctx = get_field(space, w_node, 'ctx', False)
+        w_lineno = get_field(space, w_node, 'lineno', False)
+        w_col_offset = get_field(space, w_node, 'col_offset', False)
+        _value = expr.from_object(space, w_value)
+        _ctx = expr_context.from_object(space, w_ctx)
+        _lineno = space.int_w(w_lineno)
+        _col_offset = space.int_w(w_col_offset)
+        return Starred(_value, _ctx, _lineno, _col_offset)
+
+State.ast_type('Starred', 'expr', ['value', 'ctx'])
 
 
 class Name(expr):
@@ -2902,8 +2708,6 @@
     def from_object(space, w_node):
         if space.is_w(w_node, space.w_None):
             return None
-        if space.isinstance_w(w_node, get(space).w_Ellipsis):
-            return Ellipsis.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_Slice):
             return Slice.from_object(space, w_node)
         if space.isinstance_w(w_node, get(space).w_ExtSlice):
@@ -2914,29 +2718,6 @@
                 "Expected slice node, got %T", w_node)
 State.ast_type('slice', 'AST', None, [])
 
-<<<<<<< mine
-=======
-class Ellipsis(slice):
-
-
-    def walkabout(self, visitor):
-        visitor.visit_Ellipsis(self)
-
-    def mutate_over(self, visitor):
-        return visitor.visit_Ellipsis(self)
-
-    def to_object(self, space):
-        w_node = space.call_function(get(space).w_Ellipsis)
-        return w_node
-
-    @staticmethod
-    def from_object(space, w_node):
-        return Ellipsis()
-
-State.ast_type('Ellipsis', 'slice', [])
-
-
->>>>>>> theirs
 class Slice(slice):
 
     def __init__(self, lower, upper, step):
@@ -3413,33 +3194,11 @@
             visitor._mutate_sequence(self.body)
         return visitor.visit_ExceptHandler(self)
 
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~12) ^ 19:
-            self.missing_field(space, ['lineno', 'col_offset', None, None, 'body'], 'ExceptHandler')
-        else:
-            if not self.initialization_state & 4:
-                self.type = None
-            if not self.initialization_state & 8:
-                self.name = None
-        if self.type:
-            self.type.sync_app_attrs(space)
-        w_list = self.w_body
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.body = [space.interp_w(stmt, w_obj) for w_obj in list_w]
-            else:
-                self.body = None
-        if self.body is not None:
-            for node in self.body:
-                node.sync_app_attrs(space)
-=======
     def to_object(self, space):
         w_node = space.call_function(get(space).w_ExceptHandler)
         w_type = self.type.to_object(space) if self.type is not None else space.w_None  # expr
         space.setattr(w_node, space.wrap('type'), w_type)
-        w_name = self.name.to_object(space) if self.name is not None else space.w_None  # expr
+        w_name = space.wrap(self.name)  # identifier
         space.setattr(w_node, space.wrap('name'), w_name)
         if self.body is None:
             body_w = []
@@ -3461,7 +3220,7 @@
         w_lineno = get_field(space, w_node, 'lineno', False)
         w_col_offset = get_field(space, w_node, 'col_offset', False)
         _type = expr.from_object(space, w_type)
-        _name = expr.from_object(space, w_name)
+        _name = space.str_or_None_w(w_name)
         body_w = space.unpackiterable(w_body)
         _body = [stmt.from_object(space, w_item) for w_item in body_w]
         _lineno = space.int_w(w_lineno)
@@ -3469,7 +3228,6 @@
         return ExceptHandler(_type, _name, _body, _lineno, _col_offset)
 
 State.ast_type('ExceptHandler', 'excepthandler', ['type', 'name', 'body'])
->>>>>>> theirs
 
 
 class arguments(AST):
@@ -3479,17 +3237,10 @@
         self.vararg = vararg
         self.varargannotation = varargannotation
         self.kwonlyargs = kwonlyargs
-        self.w_kwonlyargs = None
         self.kwarg = kwarg
         self.kwargannotation = kwargannotation
         self.defaults = defaults
-<<<<<<< mine
-        self.w_defaults = None
         self.kw_defaults = kw_defaults
-        self.w_kw_defaults = None
-        self.initialization_state = 255
-=======
->>>>>>> theirs
 
     def mutate_over(self, visitor):
         if self.args:
@@ -3509,125 +3260,99 @@
     def walkabout(self, visitor):
         visitor.visit_arguments(self)
 
-<<<<<<< mine
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~54) ^ 201:
-            self.missing_field(space, ['args', None, None, 'kwonlyargs', None, None, 'defaults', 'kw_defaults'], 'arguments')
-        else:
-            if not self.initialization_state & 2:
-                self.vararg = None
-            if not self.initialization_state & 4:
-                self.varargannotation = None
-            if not self.initialization_state & 16:
-                self.kwarg = None
-            if not self.initialization_state & 32:
-                self.kwargannotation = None
-        w_list = self.w_args
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.args = [space.interp_w(arg, w_obj) for w_obj in list_w]
-            else:
-                self.args = None
-        if self.args is not None:
-            for node in self.args:
-                node.sync_app_attrs(space)
-        if self.varargannotation:
-            self.varargannotation.sync_app_attrs(space)
-        w_list = self.w_kwonlyargs
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.kwonlyargs = [space.interp_w(arg, w_obj) for w_obj in list_w]
-            else:
-                self.kwonlyargs = None
-        if self.kwonlyargs is not None:
-            for node in self.kwonlyargs:
-                node.sync_app_attrs(space)
-        if self.kwargannotation:
-            self.kwargannotation.sync_app_attrs(space)
-        w_list = self.w_defaults
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.defaults = [space.interp_w(expr, w_obj) for w_obj in list_w]
-            else:
-                self.defaults = None
-        if self.defaults is not None:
-            for node in self.defaults:
-                node.sync_app_attrs(space)
-        w_list = self.w_kw_defaults
-        if w_list is not None:
-            list_w = space.listview(w_list)
-            if list_w:
-                self.kw_defaults = [space.interp_w(expr, w_obj) for w_obj in list_w]
-            else:
-                self.kw_defaults = None
-        if self.kw_defaults is not None:
-            for node in self.kw_defaults:
-                if node:
-                    node.sync_app_attrs(space)
-
-class arg(AST):
-
-    def __init__(self, arg, annotation):
-        self.arg = arg
-        self.annotation = annotation
-        self.initialization_state = 3
-
-    def mutate_over(self, visitor):
-        if self.annotation:
-            self.annotation = self.annotation.mutate_over(visitor)
-        return visitor.visit_arg(self)
-
-    def walkabout(self, visitor):
-        visitor.visit_arg(self)
-
-    def sync_app_attrs(self, space):
-        if (self.initialization_state & ~2) ^ 1:
-            self.missing_field(space, ['arg', None], 'arg')
-        else:
-            if not self.initialization_state & 2:
-                self.annotation = None
-        if self.annotation:
-            self.annotation.sync_app_attrs(space)
-=======
     def to_object(self, space):
         w_node = space.call_function(get(space).w_arguments)
         if self.args is None:
             args_w = []
         else:
-            args_w = [node.to_object(space) for node in self.args] # expr
+            args_w = [node.to_object(space) for node in self.args] # arg
         w_args = space.newlist(args_w)
         space.setattr(w_node, space.wrap('args'), w_args)
         w_vararg = space.wrap(self.vararg)  # identifier
         space.setattr(w_node, space.wrap('vararg'), w_vararg)
+        w_varargannotation = self.varargannotation.to_object(space) if self.varargannotation is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('varargannotation'), w_varargannotation)
+        if self.kwonlyargs is None:
+            kwonlyargs_w = []
+        else:
+            kwonlyargs_w = [node.to_object(space) for node in self.kwonlyargs] # arg
+        w_kwonlyargs = space.newlist(kwonlyargs_w)
+        space.setattr(w_node, space.wrap('kwonlyargs'), w_kwonlyargs)
         w_kwarg = space.wrap(self.kwarg)  # identifier
         space.setattr(w_node, space.wrap('kwarg'), w_kwarg)
+        w_kwargannotation = self.kwargannotation.to_object(space) if self.kwargannotation is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('kwargannotation'), w_kwargannotation)
         if self.defaults is None:
             defaults_w = []
         else:
             defaults_w = [node.to_object(space) for node in self.defaults] # expr
         w_defaults = space.newlist(defaults_w)
         space.setattr(w_node, space.wrap('defaults'), w_defaults)
+        if self.kw_defaults is None:
+            kw_defaults_w = []
+        else:
+            kw_defaults_w = [node.to_object(space) for node in self.kw_defaults] # expr
+        w_kw_defaults = space.newlist(kw_defaults_w)
+        space.setattr(w_node, space.wrap('kw_defaults'), w_kw_defaults)
         return w_node
 
     @staticmethod
     def from_object(space, w_node):
         w_args = get_field(space, w_node, 'args', False)
         w_vararg = get_field(space, w_node, 'vararg', True)
+        w_varargannotation = get_field(space, w_node, 'varargannotation', True)
+        w_kwonlyargs = get_field(space, w_node, 'kwonlyargs', False)
         w_kwarg = get_field(space, w_node, 'kwarg', True)
+        w_kwargannotation = get_field(space, w_node, 'kwargannotation', True)
         w_defaults = get_field(space, w_node, 'defaults', False)
+        w_kw_defaults = get_field(space, w_node, 'kw_defaults', False)
         args_w = space.unpackiterable(w_args)
-        _args = [expr.from_object(space, w_item) for w_item in args_w]
+        _args = [arg.from_object(space, w_item) for w_item in args_w]
         _vararg = space.str_or_None_w(w_vararg)
+        _varargannotation = expr.from_object(space, w_varargannotation)
+        kwonlyargs_w = space.unpackiterable(w_kwonlyargs)
+        _kwonlyargs = [arg.from_object(space, w_item) for w_item in kwonlyargs_w]
         _kwarg = space.str_or_None_w(w_kwarg)
+        _kwargannotation = expr.from_object(space, w_kwargannotation)
         defaults_w = space.unpackiterable(w_defaults)
         _defaults = [expr.from_object(space, w_item) for w_item in defaults_w]
-        return arguments(_args, _vararg, _kwarg, _defaults)
-
-State.ast_type('arguments', 'AST', ['args', 'vararg', 'kwarg', 'defaults'])
->>>>>>> theirs
+        kw_defaults_w = space.unpackiterable(w_kw_defaults)
+        _kw_defaults = [expr.from_object(space, w_item) for w_item in kw_defaults_w]
+        return arguments(_args, _vararg, _varargannotation, _kwonlyargs, _kwarg, _kwargannotation, _defaults, _kw_defaults)
+
+State.ast_type('arguments', 'AST', ['args', 'vararg', 'varargannotation', 'kwonlyargs', 'kwarg', 'kwargannotation', 'defaults', 'kw_defaults'])
+
+class arg(AST):
+
+    def __init__(self, arg, annotation):
+        self.arg = arg
+        self.annotation = annotation
+
+    def mutate_over(self, visitor):
+        if self.annotation:
+            self.annotation = self.annotation.mutate_over(visitor)
+        return visitor.visit_arg(self)
+
+    def walkabout(self, visitor):
+        visitor.visit_arg(self)
+
+    def to_object(self, space):
+        w_node = space.call_function(get(space).w_arg)
+        w_arg = space.wrap(self.arg)  # identifier
+        space.setattr(w_node, space.wrap('arg'), w_arg)
+        w_annotation = self.annotation.to_object(space) if self.annotation is not None else space.w_None  # expr
+        space.setattr(w_node, space.wrap('annotation'), w_annotation)
+        return w_node
+
+    @staticmethod
+    def from_object(space, w_node):
+        w_arg = get_field(space, w_node, 'arg', False)
+        w_annotation = get_field(space, w_node, 'annotation', True)
+        _arg = space.realstr_w(w_arg)
+        _annotation = expr.from_object(space, w_annotation)
+        return arg(_arg, _annotation)
+
+State.ast_type('arg', 'AST', ['arg', 'annotation'])
 
 class keyword(AST):
 
@@ -4083,5518 +3808,3 @@
         pass
 
 
-<<<<<<< mine
-mod.typedef = typedef.TypeDef("mod",
-    AST.typedef,
-    __module__='_ast',
-    _attributes=_FieldsWrapper([]),
-    __new__=interp2app(get_AST_new(mod)),
-)
-mod.typedef.heaptype = True
-
-def Module_get_body(space, w_self):
-    if not w_self.initialization_state & 1:
-        raise_attriberr(space, w_self, 'body')
-    if w_self.w_body is None:
-        if w_self.body is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.body]
-        w_list = space.newlist(list_w)
-        w_self.w_body = w_list
-    return w_self.w_body
-
-def Module_set_body(space, w_self, w_new_value):
-    w_self.w_body = w_new_value
-    w_self.initialization_state |= 1
-
-def Module_del_body(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Module_get_body(space, w_self)
-    w_self.deldictvalue(space, 'body')
-    w_self.initialization_state &= ~1
-
-_Module_field_unroller = unrolling_iterable(['body'])
-def Module_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(Module, w_self)
-    w_self.w_body = None
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 1:
-            w_err = space.wrap("Module constructor takes either 0 or 1 positional argument")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _Module_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)
-
-Module.typedef = typedef.TypeDef("Module",
-    mod.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['body']),
-    body=typedef.GetSetProperty(Module_get_body, Module_set_body, Module_del_body, cls=Module),
-    __new__=interp2app(get_AST_new(Module)),
-    __init__=interp2app(Module_init),
-)
-Module.typedef.heaptype = True
-
-def Interactive_get_body(space, w_self):
-    if not w_self.initialization_state & 1:
-        raise_attriberr(space, w_self, 'body')
-    if w_self.w_body is None:
-        if w_self.body is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.body]
-        w_list = space.newlist(list_w)
-        w_self.w_body = w_list
-    return w_self.w_body
-
-def Interactive_set_body(space, w_self, w_new_value):
-    w_self.w_body = w_new_value
-    w_self.initialization_state |= 1
-
-def Interactive_del_body(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Interactive_get_body(space, w_self)
-    w_self.deldictvalue(space, 'body')
-    w_self.initialization_state &= ~1
-
-_Interactive_field_unroller = unrolling_iterable(['body'])
-def Interactive_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(Interactive, w_self)
-    w_self.w_body = None
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 1:
-            w_err = space.wrap("Interactive constructor takes either 0 or 1 positional argument")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _Interactive_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)
-
-Interactive.typedef = typedef.TypeDef("Interactive",
-    mod.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['body']),
-    body=typedef.GetSetProperty(Interactive_get_body, Interactive_set_body, Interactive_del_body, cls=Interactive),
-    __new__=interp2app(get_AST_new(Interactive)),
-    __init__=interp2app(Interactive_init),
-)
-Interactive.typedef.heaptype = True
-
-def Expression_get_body(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'body')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 1:
-        raise_attriberr(space, w_self, 'body')
-    return space.wrap(w_self.body)
-
-def Expression_set_body(space, w_self, w_new_value):
-    try:
-        w_self.body = space.interp_w(expr, w_new_value, False)
-        if type(w_self.body) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'body', w_new_value)
-        w_self.initialization_state &= ~1
-        return
-    w_self.deldictvalue(space, 'body')
-    w_self.initialization_state |= 1
-
-def Expression_del_body(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Expression_get_body(space, w_self)
-    w_self.deldictvalue(space, 'body')
-    w_self.initialization_state &= ~1
-
-_Expression_field_unroller = unrolling_iterable(['body'])
-def Expression_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(Expression, w_self)
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 1:
-            w_err = space.wrap("Expression constructor takes either 0 or 1 positional argument")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _Expression_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)
-
-Expression.typedef = typedef.TypeDef("Expression",
-    mod.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['body']),
-    body=typedef.GetSetProperty(Expression_get_body, Expression_set_body, Expression_del_body, cls=Expression),
-    __new__=interp2app(get_AST_new(Expression)),
-    __init__=interp2app(Expression_init),
-)
-Expression.typedef.heaptype = True
-
-def Suite_get_body(space, w_self):
-    if not w_self.initialization_state & 1:
-        raise_attriberr(space, w_self, 'body')
-    if w_self.w_body is None:
-        if w_self.body is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.body]
-        w_list = space.newlist(list_w)
-        w_self.w_body = w_list
-    return w_self.w_body
-
-def Suite_set_body(space, w_self, w_new_value):
-    w_self.w_body = w_new_value
-    w_self.initialization_state |= 1
-
-def Suite_del_body(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Suite_get_body(space, w_self)
-    w_self.deldictvalue(space, 'body')
-    w_self.initialization_state &= ~1
-
-_Suite_field_unroller = unrolling_iterable(['body'])
-def Suite_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(Suite, w_self)
-    w_self.w_body = None
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 1:
-            w_err = space.wrap("Suite constructor takes either 0 or 1 positional argument")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _Suite_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)
-
-Suite.typedef = typedef.TypeDef("Suite",
-    mod.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['body']),
-    body=typedef.GetSetProperty(Suite_get_body, Suite_set_body, Suite_del_body, cls=Suite),
-    __new__=interp2app(get_AST_new(Suite)),
-    __init__=interp2app(Suite_init),
-)
-Suite.typedef.heaptype = True
-
-def stmt_get_lineno(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'lineno')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 1:
-        raise_attriberr(space, w_self, 'lineno')
-    return space.wrap(w_self.lineno)
-
-def stmt_set_lineno(space, w_self, w_new_value):
-    try:
-        w_self.lineno = space.int_w(w_new_value)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'lineno', w_new_value)
-        w_self.initialization_state &= ~1
-        return
-    # need to save the original object too
-    w_self.setdictvalue(space, 'lineno', w_new_value)
-    w_self.initialization_state |= 1
-
-def stmt_del_lineno(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    stmt_get_lineno(space, w_self)
-    w_self.deldictvalue(space, 'lineno')
-    w_self.initialization_state &= ~1
-
-def stmt_get_col_offset(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'col_offset')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 2:
-        raise_attriberr(space, w_self, 'col_offset')
-    return space.wrap(w_self.col_offset)
-
-def stmt_set_col_offset(space, w_self, w_new_value):
-    try:
-        w_self.col_offset = space.int_w(w_new_value)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'col_offset', w_new_value)
-        w_self.initialization_state &= ~2
-        return
-    # need to save the original object too
-    w_self.setdictvalue(space, 'col_offset', w_new_value)
-    w_self.initialization_state |= 2
-
-def stmt_del_col_offset(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    stmt_get_col_offset(space, w_self)
-    w_self.deldictvalue(space, 'col_offset')
-    w_self.initialization_state &= ~2
-
-stmt.typedef = typedef.TypeDef("stmt",
-    AST.typedef,
-    __module__='_ast',
-    _attributes=_FieldsWrapper(['lineno', 'col_offset']),
-    lineno=typedef.GetSetProperty(stmt_get_lineno, stmt_set_lineno, stmt_del_lineno, cls=stmt),
-    col_offset=typedef.GetSetProperty(stmt_get_col_offset, stmt_set_col_offset, stmt_del_col_offset, cls=stmt),
-    __new__=interp2app(get_AST_new(stmt)),
-)
-stmt.typedef.heaptype = True
-
-def FunctionDef_get_name(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'name')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 4:
-        raise_attriberr(space, w_self, 'name')
-    if w_self.name is None:
-        return space.w_None
-    return space.wrap(w_self.name.decode('utf-8'))
-
-def FunctionDef_set_name(space, w_self, w_new_value):
-    try:
-        w_self.name = space.identifier_w(w_new_value)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'name', w_new_value)
-        w_self.initialization_state &= ~4
-        return
-    # need to save the original object too
-    w_self.setdictvalue(space, 'name', w_new_value)
-    w_self.initialization_state |= 4
-
-def FunctionDef_del_name(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    FunctionDef_get_name(space, w_self)
-    w_self.deldictvalue(space, 'name')
-    w_self.initialization_state &= ~4
-
-def FunctionDef_get_args(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'args')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 8:
-        raise_attriberr(space, w_self, 'args')
-    return space.wrap(w_self.args)
-
-def FunctionDef_set_args(space, w_self, w_new_value):
-    try:
-        w_self.args = space.interp_w(arguments, w_new_value, False)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'args', w_new_value)
-        w_self.initialization_state &= ~8
-        return
-    w_self.deldictvalue(space, 'args')
-    w_self.initialization_state |= 8
-
-def FunctionDef_del_args(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    FunctionDef_get_args(space, w_self)
-    w_self.deldictvalue(space, 'args')
-    w_self.initialization_state &= ~8
-
-def FunctionDef_get_body(space, w_self):
-    if not w_self.initialization_state & 16:
-        raise_attriberr(space, w_self, 'body')
-    if w_self.w_body is None:
-        if w_self.body is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.body]
-        w_list = space.newlist(list_w)
-        w_self.w_body = w_list
-    return w_self.w_body
-
-def FunctionDef_set_body(space, w_self, w_new_value):
-    w_self.w_body = w_new_value
-    w_self.initialization_state |= 16
-
-def FunctionDef_del_body(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    FunctionDef_get_body(space, w_self)
-    w_self.deldictvalue(space, 'body')
-    w_self.initialization_state &= ~16
-
-def FunctionDef_get_decorator_list(space, w_self):
-    if not w_self.initialization_state & 32:
-        raise_attriberr(space, w_self, 'decorator_list')
-    if w_self.w_decorator_list is None:
-        if w_self.decorator_list is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.decorator_list]
-        w_list = space.newlist(list_w)
-        w_self.w_decorator_list = w_list
-    return w_self.w_decorator_list
-
-def FunctionDef_set_decorator_list(space, w_self, w_new_value):
-    w_self.w_decorator_list = w_new_value
-    w_self.initialization_state |= 32
-
-def FunctionDef_del_decorator_list(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    FunctionDef_get_decorator_list(space, w_self)
-    w_self.deldictvalue(space, 'decorator_list')
-    w_self.initialization_state &= ~32
-
-def FunctionDef_get_returns(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'returns')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 64:
-        raise_attriberr(space, w_self, 'returns')
-    return space.wrap(w_self.returns)
-
-def FunctionDef_set_returns(space, w_self, w_new_value):
-    try:
-        w_self.returns = space.interp_w(expr, w_new_value, True)
-        if type(w_self.returns) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'returns', w_new_value)
-        w_self.initialization_state &= ~64
-        return
-    w_self.deldictvalue(space, 'returns')
-    w_self.initialization_state |= 64
-
-def FunctionDef_del_returns(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    FunctionDef_get_returns(space, w_self)
-    w_self.deldictvalue(space, 'returns')
-    w_self.initialization_state &= ~64
-
-_FunctionDef_field_unroller = unrolling_iterable(['name', 'args', 'body', 'decorator_list', 'returns'])
-def FunctionDef_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(FunctionDef, w_self)
-    w_self.w_body = None
-    w_self.w_decorator_list = None
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 5:
-            w_err = space.wrap("FunctionDef constructor takes either 0 or 5 positional arguments")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _FunctionDef_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)
-
-FunctionDef.typedef = typedef.TypeDef("FunctionDef",
-    stmt.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['name', 'args', 'body', 'decorator_list', 'returns']),
-    name=typedef.GetSetProperty(FunctionDef_get_name, FunctionDef_set_name, FunctionDef_del_name, cls=FunctionDef),
-    args=typedef.GetSetProperty(FunctionDef_get_args, FunctionDef_set_args, FunctionDef_del_args, cls=FunctionDef),
-    body=typedef.GetSetProperty(FunctionDef_get_body, FunctionDef_set_body, FunctionDef_del_body, cls=FunctionDef),
-    decorator_list=typedef.GetSetProperty(FunctionDef_get_decorator_list, FunctionDef_set_decorator_list, FunctionDef_del_decorator_list, cls=FunctionDef),
-    returns=typedef.GetSetProperty(FunctionDef_get_returns, FunctionDef_set_returns, FunctionDef_del_returns, cls=FunctionDef),
-    __new__=interp2app(get_AST_new(FunctionDef)),
-    __init__=interp2app(FunctionDef_init),
-)
-FunctionDef.typedef.heaptype = True
-
-def ClassDef_get_name(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'name')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 4:
-        raise_attriberr(space, w_self, 'name')
-    if w_self.name is None:
-        return space.w_None
-    return space.wrap(w_self.name.decode('utf-8'))
-
-def ClassDef_set_name(space, w_self, w_new_value):
-    try:
-        w_self.name = space.identifier_w(w_new_value)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'name', w_new_value)
-        w_self.initialization_state &= ~4
-        return
-    # need to save the original object too
-    w_self.setdictvalue(space, 'name', w_new_value)
-    w_self.initialization_state |= 4
-
-def ClassDef_del_name(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    ClassDef_get_name(space, w_self)
-    w_self.deldictvalue(space, 'name')
-    w_self.initialization_state &= ~4
-
-def ClassDef_get_bases(space, w_self):
-    if not w_self.initialization_state & 8:
-        raise_attriberr(space, w_self, 'bases')
-    if w_self.w_bases is None:
-        if w_self.bases is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.bases]
-        w_list = space.newlist(list_w)
-        w_self.w_bases = w_list
-    return w_self.w_bases
-
-def ClassDef_set_bases(space, w_self, w_new_value):
-    w_self.w_bases = w_new_value
-    w_self.initialization_state |= 8
-
-def ClassDef_del_bases(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    ClassDef_get_bases(space, w_self)
-    w_self.deldictvalue(space, 'bases')
-    w_self.initialization_state &= ~8
-
-def ClassDef_get_keywords(space, w_self):
-    if not w_self.initialization_state & 16:
-        raise_attriberr(space, w_self, 'keywords')
-    if w_self.w_keywords is None:
-        if w_self.keywords is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.keywords]
-        w_list = space.newlist(list_w)
-        w_self.w_keywords = w_list
-    return w_self.w_keywords
-
-def ClassDef_set_keywords(space, w_self, w_new_value):
-    w_self.w_keywords = w_new_value
-    w_self.initialization_state |= 16
-
-def ClassDef_del_keywords(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    ClassDef_get_keywords(space, w_self)
-    w_self.deldictvalue(space, 'keywords')
-    w_self.initialization_state &= ~16
-
-def ClassDef_get_starargs(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'starargs')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 32:
-        raise_attriberr(space, w_self, 'starargs')
-    return space.wrap(w_self.starargs)
-
-def ClassDef_set_starargs(space, w_self, w_new_value):
-    try:
-        w_self.starargs = space.interp_w(expr, w_new_value, True)
-        if type(w_self.starargs) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'starargs', w_new_value)
-        w_self.initialization_state &= ~32
-        return
-    w_self.deldictvalue(space, 'starargs')
-    w_self.initialization_state |= 32
-
-def ClassDef_del_starargs(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    ClassDef_get_starargs(space, w_self)
-    w_self.deldictvalue(space, 'starargs')
-    w_self.initialization_state &= ~32
-
-def ClassDef_get_kwargs(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'kwargs')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 64:
-        raise_attriberr(space, w_self, 'kwargs')
-    return space.wrap(w_self.kwargs)
-
-def ClassDef_set_kwargs(space, w_self, w_new_value):
-    try:
-        w_self.kwargs = space.interp_w(expr, w_new_value, True)
-        if type(w_self.kwargs) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'kwargs', w_new_value)
-        w_self.initialization_state &= ~64
-        return
-    w_self.deldictvalue(space, 'kwargs')
-    w_self.initialization_state |= 64
-
-def ClassDef_del_kwargs(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    ClassDef_get_kwargs(space, w_self)
-    w_self.deldictvalue(space, 'kwargs')
-    w_self.initialization_state &= ~64
-
-def ClassDef_get_body(space, w_self):
-    if not w_self.initialization_state & 128:
-        raise_attriberr(space, w_self, 'body')
-    if w_self.w_body is None:
-        if w_self.body is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.body]
-        w_list = space.newlist(list_w)
-        w_self.w_body = w_list
-    return w_self.w_body
-
-def ClassDef_set_body(space, w_self, w_new_value):
-    w_self.w_body = w_new_value
-    w_self.initialization_state |= 128
-
-def ClassDef_del_body(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    ClassDef_get_body(space, w_self)
-    w_self.deldictvalue(space, 'body')
-    w_self.initialization_state &= ~128
-
-def ClassDef_get_decorator_list(space, w_self):
-    if not w_self.initialization_state & 256:
-        raise_attriberr(space, w_self, 'decorator_list')
-    if w_self.w_decorator_list is None:
-        if w_self.decorator_list is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.decorator_list]
-        w_list = space.newlist(list_w)
-        w_self.w_decorator_list = w_list
-    return w_self.w_decorator_list
-
-def ClassDef_set_decorator_list(space, w_self, w_new_value):
-    w_self.w_decorator_list = w_new_value
-    w_self.initialization_state |= 256
-
-def ClassDef_del_decorator_list(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    ClassDef_get_decorator_list(space, w_self)
-    w_self.deldictvalue(space, 'decorator_list')
-    w_self.initialization_state &= ~256
-
-_ClassDef_field_unroller = unrolling_iterable(['name', 'bases', 'keywords', 'starargs', 'kwargs', 'body', 'decorator_list'])
-def ClassDef_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(ClassDef, w_self)
-    w_self.w_bases = None
-    w_self.w_keywords = None
-    w_self.w_body = None
-    w_self.w_decorator_list = None
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 7:
-            w_err = space.wrap("ClassDef constructor takes either 0 or 7 positional arguments")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _ClassDef_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)
-
-ClassDef.typedef = typedef.TypeDef("ClassDef",
-    stmt.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['name', 'bases', 'keywords', 'starargs', 'kwargs', 'body', 'decorator_list']),
-    name=typedef.GetSetProperty(ClassDef_get_name, ClassDef_set_name, ClassDef_del_name, cls=ClassDef),
-    bases=typedef.GetSetProperty(ClassDef_get_bases, ClassDef_set_bases, ClassDef_del_bases, cls=ClassDef),
-    keywords=typedef.GetSetProperty(ClassDef_get_keywords, ClassDef_set_keywords, ClassDef_del_keywords, cls=ClassDef),
-    starargs=typedef.GetSetProperty(ClassDef_get_starargs, ClassDef_set_starargs, ClassDef_del_starargs, cls=ClassDef),
-    kwargs=typedef.GetSetProperty(ClassDef_get_kwargs, ClassDef_set_kwargs, ClassDef_del_kwargs, cls=ClassDef),
-    body=typedef.GetSetProperty(ClassDef_get_body, ClassDef_set_body, ClassDef_del_body, cls=ClassDef),
-    decorator_list=typedef.GetSetProperty(ClassDef_get_decorator_list, ClassDef_set_decorator_list, ClassDef_del_decorator_list, cls=ClassDef),
-    __new__=interp2app(get_AST_new(ClassDef)),
-    __init__=interp2app(ClassDef_init),
-)
-ClassDef.typedef.heaptype = True
-
-def Return_get_value(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'value')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 4:
-        raise_attriberr(space, w_self, 'value')
-    return space.wrap(w_self.value)
-
-def Return_set_value(space, w_self, w_new_value):
-    try:
-        w_self.value = space.interp_w(expr, w_new_value, True)
-        if type(w_self.value) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'value', w_new_value)
-        w_self.initialization_state &= ~4
-        return
-    w_self.deldictvalue(space, 'value')
-    w_self.initialization_state |= 4
-
-def Return_del_value(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Return_get_value(space, w_self)
-    w_self.deldictvalue(space, 'value')
-    w_self.initialization_state &= ~4
-
-_Return_field_unroller = unrolling_iterable(['value'])
-def Return_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(Return, w_self)
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 1:
-            w_err = space.wrap("Return constructor takes either 0 or 1 positional argument")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _Return_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)
-
-Return.typedef = typedef.TypeDef("Return",
-    stmt.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['value']),
-    value=typedef.GetSetProperty(Return_get_value, Return_set_value, Return_del_value, cls=Return),
-    __new__=interp2app(get_AST_new(Return)),
-    __init__=interp2app(Return_init),
-)
-Return.typedef.heaptype = True
-
-def Delete_get_targets(space, w_self):
-    if not w_self.initialization_state & 4:
-        raise_attriberr(space, w_self, 'targets')
-    if w_self.w_targets is None:
-        if w_self.targets is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.targets]
-        w_list = space.newlist(list_w)
-        w_self.w_targets = w_list
-    return w_self.w_targets
-
-def Delete_set_targets(space, w_self, w_new_value):
-    w_self.w_targets = w_new_value
-    w_self.initialization_state |= 4
-
-def Delete_del_targets(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Delete_get_targets(space, w_self)
-    w_self.deldictvalue(space, 'targets')
-    w_self.initialization_state &= ~4
-
-_Delete_field_unroller = unrolling_iterable(['targets'])
-def Delete_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(Delete, w_self)
-    w_self.w_targets = None
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 1:
-            w_err = space.wrap("Delete constructor takes either 0 or 1 positional argument")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _Delete_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)
-
-Delete.typedef = typedef.TypeDef("Delete",
-    stmt.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['targets']),
-    targets=typedef.GetSetProperty(Delete_get_targets, Delete_set_targets, Delete_del_targets, cls=Delete),
-    __new__=interp2app(get_AST_new(Delete)),
-    __init__=interp2app(Delete_init),
-)
-Delete.typedef.heaptype = True
-
-def Assign_get_targets(space, w_self):
-    if not w_self.initialization_state & 4:
-        raise_attriberr(space, w_self, 'targets')
-    if w_self.w_targets is None:
-        if w_self.targets is None:
-            list_w = []
-        else:
-            list_w = [space.wrap(node) for node in w_self.targets]
-        w_list = space.newlist(list_w)
-        w_self.w_targets = w_list
-    return w_self.w_targets
-
-def Assign_set_targets(space, w_self, w_new_value):
-    w_self.w_targets = w_new_value
-    w_self.initialization_state |= 4
-
-def Assign_del_targets(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Assign_get_targets(space, w_self)
-    w_self.deldictvalue(space, 'targets')
-    w_self.initialization_state &= ~4
-
-def Assign_get_value(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'value')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 8:
-        raise_attriberr(space, w_self, 'value')
-    return space.wrap(w_self.value)
-
-def Assign_set_value(space, w_self, w_new_value):
-    try:
-        w_self.value = space.interp_w(expr, w_new_value, False)
-        if type(w_self.value) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'value', w_new_value)
-        w_self.initialization_state &= ~8
-        return
-    w_self.deldictvalue(space, 'value')
-    w_self.initialization_state |= 8
-
-def Assign_del_value(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    Assign_get_value(space, w_self)
-    w_self.deldictvalue(space, 'value')
-    w_self.initialization_state &= ~8
-
-_Assign_field_unroller = unrolling_iterable(['targets', 'value'])
-def Assign_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(Assign, w_self)
-    w_self.w_targets = None
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 2:
-            w_err = space.wrap("Assign constructor takes either 0 or 2 positional arguments")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0
-        for field in _Assign_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)
-
-Assign.typedef = typedef.TypeDef("Assign",
-    stmt.typedef,
-    __module__='_ast',
-    _fields=_FieldsWrapper(['targets', 'value']),
-    targets=typedef.GetSetProperty(Assign_get_targets, Assign_set_targets, Assign_del_targets, cls=Assign),
-    value=typedef.GetSetProperty(Assign_get_value, Assign_set_value, Assign_del_value, cls=Assign),
-    __new__=interp2app(get_AST_new(Assign)),
-    __init__=interp2app(Assign_init),
-)
-Assign.typedef.heaptype = True
-
-def AugAssign_get_target(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'target')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 4:
-        raise_attriberr(space, w_self, 'target')
-    return space.wrap(w_self.target)
-
-def AugAssign_set_target(space, w_self, w_new_value):
-    try:
-        w_self.target = space.interp_w(expr, w_new_value, False)
-        if type(w_self.target) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'target', w_new_value)
-        w_self.initialization_state &= ~4
-        return
-    w_self.deldictvalue(space, 'target')
-    w_self.initialization_state |= 4
-
-def AugAssign_del_target(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    AugAssign_get_target(space, w_self)
-    w_self.deldictvalue(space, 'target')
-    w_self.initialization_state &= ~4
-
-def AugAssign_get_op(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'op')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 8:
-        raise_attriberr(space, w_self, 'op')
-    return operator_to_class[w_self.op - 1]()
-
-def AugAssign_set_op(space, w_self, w_new_value):
-    try:
-        obj = space.interp_w(operator, w_new_value)
-        w_self.op = obj.to_simple_int(space)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'op', w_new_value)
-        w_self.initialization_state &= ~8
-        return
-    # need to save the original object too
-    w_self.setdictvalue(space, 'op', w_new_value)
-    w_self.initialization_state |= 8
-
-def AugAssign_del_op(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    AugAssign_get_op(space, w_self)
-    w_self.deldictvalue(space, 'op')
-    w_self.initialization_state &= ~8
-
-def AugAssign_get_value(space, w_self):
-    if w_self.w_dict is not None:
-        w_obj = w_self.getdictvalue(space, 'value')
-        if w_obj is not None:
-            return w_obj
-    if not w_self.initialization_state & 16:
-        raise_attriberr(space, w_self, 'value')
-    return space.wrap(w_self.value)
-
-def AugAssign_set_value(space, w_self, w_new_value):
-    try:
-        w_self.value = space.interp_w(expr, w_new_value, False)
-        if type(w_self.value) is expr:
-            raise OperationError(space.w_TypeError, space.w_None)
-    except OperationError, e:
-        if not e.match(space, space.w_TypeError):
-            raise
-        w_self.setdictvalue(space, 'value', w_new_value)
-        w_self.initialization_state &= ~16
-        return
-    w_self.deldictvalue(space, 'value')
-    w_self.initialization_state |= 16
-
-def AugAssign_del_value(space, w_self):
-    # Check if the element exists, raise appropriate exceptions
-    AugAssign_get_value(space, w_self)
-    w_self.deldictvalue(space, 'value')
-    w_self.initialization_state &= ~16
-
-_AugAssign_field_unroller = unrolling_iterable(['target', 'op', 'value'])
-def AugAssign_init(space, w_self, __args__):
-    w_self = space.descr_self_interp_w(AugAssign, w_self)
-    args_w, kwargs_w = __args__.unpack()
-    if args_w:
-        if len(args_w) != 3:
-            w_err = space.wrap("AugAssign constructor takes either 0 or 3 positional arguments")
-            raise OperationError(space.w_TypeError, w_err)
-        i = 0


More information about the pypy-commit mailing list