[pypy-commit] pypy ast-issue1673: solved issue 1713 and issue 1673

wenzhuman noreply at buildbot.pypy.org
Tue Apr 1 05:39:23 CEST 2014


Author: wenzhuman <manwenzhu at gamil.com>
Branch: ast-issue1673
Changeset: r70364:7f42f2f479e4
Date: 2014-03-30 03:30 -0400
http://bitbucket.org/pypy/pypy/changeset/7f42f2f479e4/

Log:	solved issue 1713 and issue 1673

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
@@ -49,13 +49,19 @@
         w_type = space.type(self)
         w_fields = w_type.getdictvalue(space, "_fields")
         for w_name in space.fixedview(w_fields):
-            space.setitem(w_dict, w_name,
+            try:
+                space.setitem(w_dict, w_name,
                           space.getattr(self, w_name))
+            except:
+                pass
         w_attrs = space.findattr(w_type, space.wrap("_attributes"))
         if w_attrs:
             for w_name in space.fixedview(w_attrs):
-                space.setitem(w_dict, w_name,
+                try:
+                    space.setitem(w_dict, w_name,
                               space.getattr(self, w_name))
+                except:
+                    pass
         return space.newtuple([space.type(self),
                                space.newtuple([]),
                                w_dict])
@@ -2913,7 +2919,7 @@
         w_self.setdictvalue(space, 'body', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'body')
+    w_self.setdictvalue(space, 'body', w_new_value)
     w_self.initialization_state |= 1
 
 def Expression_del_body(space, w_self):
@@ -3011,7 +3017,7 @@
         w_self.setdictvalue(space, 'lineno', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'lineno')
+    w_self.setdictvalue(space, 'lineno', w_new_value)
     w_self.initialization_state |= 1
 
 def stmt_del_lineno(space, w_self):
@@ -3038,7 +3044,7 @@
         w_self.setdictvalue(space, 'col_offset', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'col_offset')
+    w_self.setdictvalue(space, 'col_offset', w_new_value)
     w_self.initialization_state |= 2
 
 def stmt_del_col_offset(space, w_self):
@@ -3074,7 +3080,7 @@
         w_self.setdictvalue(space, 'name', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'name')
+    w_self.setdictvalue(space, 'name', w_new_value)
     w_self.initialization_state |= 4
 
 def FunctionDef_del_name(space, w_self):
@@ -3101,7 +3107,7 @@
         w_self.setdictvalue(space, 'args', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'args')
+    w_self.setdictvalue(space, 'args', w_new_value)
     w_self.initialization_state |= 8
 
 def FunctionDef_del_args(space, w_self):
@@ -3201,7 +3207,7 @@
         w_self.setdictvalue(space, 'name', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'name')
+    w_self.setdictvalue(space, 'name', w_new_value)
     w_self.initialization_state |= 4
 
 def ClassDef_del_name(space, w_self):
@@ -3326,7 +3332,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 4
 
 def Return_del_value(space, w_self):
@@ -3448,7 +3454,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 8
 
 def Assign_del_value(space, w_self):
@@ -3503,7 +3509,7 @@
         w_self.setdictvalue(space, 'target', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'target')
+    w_self.setdictvalue(space, 'target', w_new_value)
     w_self.initialization_state |= 4
 
 def AugAssign_del_target(space, w_self):
@@ -3561,7 +3567,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~16
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 16
 
 def AugAssign_del_value(space, w_self):
@@ -3616,7 +3622,7 @@
         w_self.setdictvalue(space, 'dest', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'dest')
+    w_self.setdictvalue(space, 'dest', w_new_value)
     w_self.initialization_state |= 4
 
 def Print_del_dest(space, w_self):
@@ -3665,7 +3671,7 @@
         w_self.setdictvalue(space, 'nl', w_new_value)
         w_self.initialization_state &= ~16
         return
-    w_self.deldictvalue(space, 'nl')
+    w_self.setdictvalue(space, 'nl', w_new_value)
     w_self.initialization_state |= 16
 
 def Print_del_nl(space, w_self):
@@ -3721,7 +3727,7 @@
         w_self.setdictvalue(space, 'target', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'target')
+    w_self.setdictvalue(space, 'target', w_new_value)
     w_self.initialization_state |= 4
 
 def For_del_target(space, w_self):
@@ -3750,7 +3756,7 @@
         w_self.setdictvalue(space, 'iter', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'iter')
+    w_self.setdictvalue(space, 'iter', w_new_value)
     w_self.initialization_state |= 8
 
 def For_del_iter(space, w_self):
@@ -3852,7 +3858,7 @@
         w_self.setdictvalue(space, 'test', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'test')
+    w_self.setdictvalue(space, 'test', w_new_value)
     w_self.initialization_state |= 4
 
 def While_del_test(space, w_self):
@@ -3953,7 +3959,7 @@
         w_self.setdictvalue(space, 'test', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'test')
+    w_self.setdictvalue(space, 'test', w_new_value)
     w_self.initialization_state |= 4
 
 def If_del_test(space, w_self):
@@ -4054,7 +4060,7 @@
         w_self.setdictvalue(space, 'context_expr', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'context_expr')
+    w_self.setdictvalue(space, 'context_expr', w_new_value)
     w_self.initialization_state |= 4
 
 def With_del_context_expr(space, w_self):
@@ -4083,7 +4089,7 @@
         w_self.setdictvalue(space, 'optional_vars', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'optional_vars')
+    w_self.setdictvalue(space, 'optional_vars', w_new_value)
     w_self.initialization_state |= 8
 
 def With_del_optional_vars(space, w_self):
@@ -4161,7 +4167,7 @@
         w_self.setdictvalue(space, 'type', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'type')
+    w_self.setdictvalue(space, 'type', w_new_value)
     w_self.initialization_state |= 4
 
 def Raise_del_type(space, w_self):
@@ -4190,7 +4196,7 @@
         w_self.setdictvalue(space, 'inst', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'inst')
+    w_self.setdictvalue(space, 'inst', w_new_value)
     w_self.initialization_state |= 8
 
 def Raise_del_inst(space, w_self):
@@ -4219,7 +4225,7 @@
         w_self.setdictvalue(space, 'tback', w_new_value)
         w_self.initialization_state &= ~16
         return
-    w_self.deldictvalue(space, 'tback')
+    w_self.setdictvalue(space, 'tback', w_new_value)
     w_self.initialization_state |= 16
 
 def Raise_del_tback(space, w_self):
@@ -4440,7 +4446,7 @@
         w_self.setdictvalue(space, 'test', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'test')
+    w_self.setdictvalue(space, 'test', w_new_value)
     w_self.initialization_state |= 4
 
 def Assert_del_test(space, w_self):
@@ -4469,7 +4475,7 @@
         w_self.setdictvalue(space, 'msg', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'msg')
+    w_self.setdictvalue(space, 'msg', w_new_value)
     w_self.initialization_state |= 8
 
 def Assert_del_msg(space, w_self):
@@ -4571,7 +4577,7 @@
         w_self.setdictvalue(space, 'module', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'module')
+    w_self.setdictvalue(space, 'module', w_new_value)
     w_self.initialization_state |= 4
 
 def ImportFrom_del_module(space, w_self):
@@ -4620,7 +4626,7 @@
         w_self.setdictvalue(space, 'level', w_new_value)
         w_self.initialization_state &= ~16
         return
-    w_self.deldictvalue(space, 'level')
+    w_self.setdictvalue(space, 'level', w_new_value)
     w_self.initialization_state |= 16
 
 def ImportFrom_del_level(space, w_self):
@@ -4676,7 +4682,7 @@
         w_self.setdictvalue(space, 'body', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'body')
+    w_self.setdictvalue(space, 'body', w_new_value)
     w_self.initialization_state |= 4
 
 def Exec_del_body(space, w_self):
@@ -4705,7 +4711,7 @@
         w_self.setdictvalue(space, 'globals', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'globals')
+    w_self.setdictvalue(space, 'globals', w_new_value)
     w_self.initialization_state |= 8
 
 def Exec_del_globals(space, w_self):
@@ -4734,7 +4740,7 @@
         w_self.setdictvalue(space, 'locals', w_new_value)
         w_self.initialization_state &= ~16
         return
-    w_self.deldictvalue(space, 'locals')
+    w_self.setdictvalue(space, 'locals', w_new_value)
     w_self.initialization_state |= 16
 
 def Exec_del_locals(space, w_self):
@@ -4836,7 +4842,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 4
 
 def Expr_del_value(space, w_self):
@@ -4938,7 +4944,7 @@
         w_self.setdictvalue(space, 'lineno', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'lineno')
+    w_self.setdictvalue(space, 'lineno', w_new_value)
     w_self.initialization_state |= 1
 
 def expr_del_lineno(space, w_self):
@@ -4965,7 +4971,7 @@
         w_self.setdictvalue(space, 'col_offset', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'col_offset')
+    w_self.setdictvalue(space, 'col_offset', w_new_value)
     w_self.initialization_state |= 2
 
 def expr_del_col_offset(space, w_self):
@@ -5080,7 +5086,7 @@
         w_self.setdictvalue(space, 'left', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'left')
+    w_self.setdictvalue(space, 'left', w_new_value)
     w_self.initialization_state |= 4
 
 def BinOp_del_left(space, w_self):
@@ -5138,7 +5144,7 @@
         w_self.setdictvalue(space, 'right', w_new_value)
         w_self.initialization_state &= ~16
         return
-    w_self.deldictvalue(space, 'right')
+    w_self.setdictvalue(space, 'right', w_new_value)
     w_self.initialization_state |= 16
 
 def BinOp_del_right(space, w_self):
@@ -5222,7 +5228,7 @@
         w_self.setdictvalue(space, 'operand', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'operand')
+    w_self.setdictvalue(space, 'operand', w_new_value)
     w_self.initialization_state |= 8
 
 def UnaryOp_del_operand(space, w_self):
@@ -5274,7 +5280,7 @@
         w_self.setdictvalue(space, 'args', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'args')
+    w_self.setdictvalue(space, 'args', w_new_value)
     w_self.initialization_state |= 4
 
 def Lambda_del_args(space, w_self):
@@ -5303,7 +5309,7 @@
         w_self.setdictvalue(space, 'body', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'body')
+    w_self.setdictvalue(space, 'body', w_new_value)
     w_self.initialization_state |= 8
 
 def Lambda_del_body(space, w_self):
@@ -5357,7 +5363,7 @@
         w_self.setdictvalue(space, 'test', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'test')
+    w_self.setdictvalue(space, 'test', w_new_value)
     w_self.initialization_state |= 4
 
 def IfExp_del_test(space, w_self):
@@ -5386,7 +5392,7 @@
         w_self.setdictvalue(space, 'body', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'body')
+    w_self.setdictvalue(space, 'body', w_new_value)
     w_self.initialization_state |= 8
 
 def IfExp_del_body(space, w_self):
@@ -5415,7 +5421,7 @@
         w_self.setdictvalue(space, 'orelse', w_new_value)
         w_self.initialization_state &= ~16
         return
-    w_self.deldictvalue(space, 'orelse')
+    w_self.setdictvalue(space, 'orelse', w_new_value)
     w_self.initialization_state |= 16
 
 def IfExp_del_orelse(space, w_self):
@@ -5588,7 +5594,7 @@
         w_self.setdictvalue(space, 'elt', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'elt')
+    w_self.setdictvalue(space, 'elt', w_new_value)
     w_self.initialization_state |= 4
 
 def ListComp_del_elt(space, w_self):
@@ -5665,7 +5671,7 @@
         w_self.setdictvalue(space, 'elt', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'elt')
+    w_self.setdictvalue(space, 'elt', w_new_value)
     w_self.initialization_state |= 4
 
 def SetComp_del_elt(space, w_self):
@@ -5742,7 +5748,7 @@
         w_self.setdictvalue(space, 'key', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'key')
+    w_self.setdictvalue(space, 'key', w_new_value)
     w_self.initialization_state |= 4
 
 def DictComp_del_key(space, w_self):
@@ -5771,7 +5777,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 8
 
 def DictComp_del_value(space, w_self):
@@ -5849,7 +5855,7 @@
         w_self.setdictvalue(space, 'elt', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'elt')
+    w_self.setdictvalue(space, 'elt', w_new_value)
     w_self.initialization_state |= 4
 
 def GeneratorExp_del_elt(space, w_self):
@@ -5926,7 +5932,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 4
 
 def Yield_del_value(space, w_self):
@@ -5979,7 +5985,7 @@
         w_self.setdictvalue(space, 'left', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'left')
+    w_self.setdictvalue(space, 'left', w_new_value)
     w_self.initialization_state |= 4
 
 def Compare_del_left(space, w_self):
@@ -6080,7 +6086,7 @@
         w_self.setdictvalue(space, 'func', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'func')
+    w_self.setdictvalue(space, 'func', w_new_value)
     w_self.initialization_state |= 4
 
 def Call_del_func(space, w_self):
@@ -6153,7 +6159,7 @@
         w_self.setdictvalue(space, 'starargs', w_new_value)
         w_self.initialization_state &= ~32
         return
-    w_self.deldictvalue(space, 'starargs')
+    w_self.setdictvalue(space, 'starargs', w_new_value)
     w_self.initialization_state |= 32
 
 def Call_del_starargs(space, w_self):
@@ -6182,7 +6188,7 @@
         w_self.setdictvalue(space, 'kwargs', w_new_value)
         w_self.initialization_state &= ~64
         return
-    w_self.deldictvalue(space, 'kwargs')
+    w_self.setdictvalue(space, 'kwargs', w_new_value)
     w_self.initialization_state |= 64
 
 def Call_del_kwargs(space, w_self):
@@ -6241,7 +6247,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 4
 
 def Repr_del_value(space, w_self):
@@ -6292,7 +6298,7 @@
         w_self.setdictvalue(space, 'n', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'n')
+    w_self.setdictvalue(space, 'n', w_new_value)
     w_self.initialization_state |= 4
 
 def Num_del_n(space, w_self):
@@ -6343,7 +6349,7 @@
         w_self.setdictvalue(space, 's', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 's')
+    w_self.setdictvalue(space, 's', w_new_value)
     w_self.initialization_state |= 4
 
 def Str_del_s(space, w_self):
@@ -6396,7 +6402,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 4
 
 def Attribute_del_value(space, w_self):
@@ -6423,7 +6429,7 @@
         w_self.setdictvalue(space, 'attr', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'attr')
+    w_self.setdictvalue(space, 'attr', w_new_value)
     w_self.initialization_state |= 8
 
 def Attribute_del_attr(space, w_self):
@@ -6507,7 +6513,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 4
 
 def Subscript_del_value(space, w_self):
@@ -6536,7 +6542,7 @@
         w_self.setdictvalue(space, 'slice', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'slice')
+    w_self.setdictvalue(space, 'slice', w_new_value)
     w_self.initialization_state |= 8
 
 def Subscript_del_slice(space, w_self):
@@ -6618,7 +6624,7 @@
         w_self.setdictvalue(space, 'id', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'id')
+    w_self.setdictvalue(space, 'id', w_new_value)
     w_self.initialization_state |= 4
 
 def Name_del_id(space, w_self):
@@ -6853,7 +6859,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 4
 
 def Const_del_value(space, w_self):
@@ -6979,7 +6985,7 @@
         w_self.setdictvalue(space, 'lower', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'lower')
+    w_self.setdictvalue(space, 'lower', w_new_value)
     w_self.initialization_state |= 1
 
 def Slice_del_lower(space, w_self):
@@ -7008,7 +7014,7 @@
         w_self.setdictvalue(space, 'upper', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'upper')
+    w_self.setdictvalue(space, 'upper', w_new_value)
     w_self.initialization_state |= 2
 
 def Slice_del_upper(space, w_self):
@@ -7037,7 +7043,7 @@
         w_self.setdictvalue(space, 'step', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'step')
+    w_self.setdictvalue(space, 'step', w_new_value)
     w_self.initialization_state |= 4
 
 def Slice_del_step(space, w_self):
@@ -7139,7 +7145,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 1
 
 def Index_del_value(space, w_self):
@@ -7416,7 +7422,7 @@
         w_self.setdictvalue(space, 'target', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'target')
+    w_self.setdictvalue(space, 'target', w_new_value)
     w_self.initialization_state |= 1
 
 def comprehension_del_target(space, w_self):
@@ -7445,7 +7451,7 @@
         w_self.setdictvalue(space, 'iter', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'iter')
+    w_self.setdictvalue(space, 'iter', w_new_value)
     w_self.initialization_state |= 2
 
 def comprehension_del_iter(space, w_self):
@@ -7521,7 +7527,7 @@
         w_self.setdictvalue(space, 'lineno', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'lineno')
+    w_self.setdictvalue(space, 'lineno', w_new_value)
     w_self.initialization_state |= 1
 
 def excepthandler_del_lineno(space, w_self):
@@ -7548,7 +7554,7 @@
         w_self.setdictvalue(space, 'col_offset', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'col_offset')
+    w_self.setdictvalue(space, 'col_offset', w_new_value)
     w_self.initialization_state |= 2
 
 def excepthandler_del_col_offset(space, w_self):
@@ -7586,7 +7592,7 @@
         w_self.setdictvalue(space, 'type', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'type')
+    w_self.setdictvalue(space, 'type', w_new_value)
     w_self.initialization_state |= 4
 
 def ExceptHandler_del_type(space, w_self):
@@ -7615,7 +7621,7 @@
         w_self.setdictvalue(space, 'name', w_new_value)
         w_self.initialization_state &= ~8
         return
-    w_self.deldictvalue(space, 'name')
+    w_self.setdictvalue(space, 'name', w_new_value)
     w_self.initialization_state |= 8
 
 def ExceptHandler_del_name(space, w_self):
@@ -7716,7 +7722,7 @@
         w_self.setdictvalue(space, 'vararg', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'vararg')
+    w_self.setdictvalue(space, 'vararg', w_new_value)
     w_self.initialization_state |= 2
 
 def arguments_del_vararg(space, w_self):
@@ -7746,7 +7752,7 @@
         w_self.setdictvalue(space, 'kwarg', w_new_value)
         w_self.initialization_state &= ~4
         return
-    w_self.deldictvalue(space, 'kwarg')
+    w_self.setdictvalue(space, 'kwarg', w_new_value)
     w_self.initialization_state |= 4
 
 def arguments_del_kwarg(space, w_self):
@@ -7824,7 +7830,7 @@
         w_self.setdictvalue(space, 'arg', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'arg')
+    w_self.setdictvalue(space, 'arg', w_new_value)
     w_self.initialization_state |= 1
 
 def keyword_del_arg(space, w_self):
@@ -7853,7 +7859,7 @@
         w_self.setdictvalue(space, 'value', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'value')
+    w_self.setdictvalue(space, 'value', w_new_value)
     w_self.initialization_state |= 2
 
 def keyword_del_value(space, w_self):
@@ -7905,7 +7911,7 @@
         w_self.setdictvalue(space, 'name', w_new_value)
         w_self.initialization_state &= ~1
         return
-    w_self.deldictvalue(space, 'name')
+    w_self.setdictvalue(space, 'name', w_new_value)
     w_self.initialization_state |= 1
 
 def alias_del_name(space, w_self):
@@ -7935,7 +7941,7 @@
         w_self.setdictvalue(space, 'asname', w_new_value)
         w_self.initialization_state &= ~2
         return
-    w_self.deldictvalue(space, 'asname')
+    w_self.setdictvalue(space, 'asname', w_new_value)
     w_self.initialization_state |= 2
 
 def alias_del_asname(space, w_self):
diff --git a/pypy/interpreter/astcompiler/tools/asdl_py.py b/pypy/interpreter/astcompiler/tools/asdl_py.py
--- a/pypy/interpreter/astcompiler/tools/asdl_py.py
+++ b/pypy/interpreter/astcompiler/tools/asdl_py.py
@@ -480,7 +480,9 @@
                 self.emit("w_self.setdictvalue(space, '%s', w_new_value)"
                           % (field.name,), 1)
             else:
-                self.emit("w_self.deldictvalue(space, '%s')" %(field.name,), 1)
+                #self.emit("w_self.deldictvalue(space, '%s')" %(field.name,), 1)
+                self.emit("w_self.setdictvalue(space, '%s', w_new_value)"
+                          % (field.name,), 1)
         self.emit("w_self.initialization_state |= %s" % (flag,), 1)
         self.emit("")
 
@@ -596,13 +598,19 @@
         w_type = space.type(self)
         w_fields = w_type.getdictvalue(space, "_fields")
         for w_name in space.fixedview(w_fields):
-            space.setitem(w_dict, w_name,
+            try:
+                space.setitem(w_dict, w_name,
                           space.getattr(self, w_name))
+            except:
+                pass
         w_attrs = space.findattr(w_type, space.wrap("_attributes"))
         if w_attrs:
             for w_name in space.fixedview(w_attrs):
-                space.setitem(w_dict, w_name,
+                try:
+                    space.setitem(w_dict, w_name,
                               space.getattr(self, w_name))
+                except:
+                    pass
         return space.newtuple([space.type(self),
                                space.newtuple([]),
                                w_dict])


More information about the pypy-commit mailing list