[pypy-svn] r50256 - in pypy/branch/astcompilertests/pypy/interpreter/astcompiler: . test
arigo at codespeak.net
arigo at codespeak.net
Wed Jan 2 13:44:28 CET 2008
Author: arigo
Date: Wed Jan 2 13:44:27 2008
New Revision: 50256
Modified:
pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.py
pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.txt
pypy/branch/astcompilertests/pypy/interpreter/astcompiler/astgen.py
pypy/branch/astcompilertests/pypy/interpreter/astcompiler/opt.py
pypy/branch/astcompilertests/pypy/interpreter/astcompiler/test/test_ast.py
Log:
Translation fixes.
Modified: pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.py
==============================================================================
--- pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.py (original)
+++ pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.py Wed Jan 2 13:44:27 2008
@@ -45,7 +45,7 @@
def accept(self, visitor):
raise NotImplementedError
def mutate(self, visitor):
- return visitor.visitNode(self)
+ raise NotImplementedError
def flatten(self):
res = []
nodes = self.getChildNodes()
@@ -364,12 +364,7 @@
return visitor.visitAnd(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitAnd(self)
def fget_nodes( space, self):
@@ -550,12 +545,7 @@
return visitor.visitAssList(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitAssList(self)
def fget_nodes( space, self):
@@ -697,12 +687,7 @@
return visitor.visitAssTuple(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitAssTuple(self)
def fget_nodes( space, self):
@@ -859,12 +844,7 @@
return visitor.visitAssign(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
self.expr = self.expr.mutate(visitor)
return visitor.visitAssign(self)
@@ -1156,12 +1136,7 @@
return visitor.visitBitand(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitBitand(self)
def fget_nodes( space, self):
@@ -1234,12 +1209,7 @@
return visitor.visitBitor(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitBitor(self)
def fget_nodes( space, self):
@@ -1312,12 +1282,7 @@
return visitor.visitBitxor(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitBitxor(self)
def fget_nodes( space, self):
@@ -1443,12 +1408,7 @@
def mutate(self, visitor):
self.node = self.node.mutate(visitor)
- newlist = []
- for n in self.args:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.args[:] = newlist
+ visitor._mutate_list(self.args)
if self.star_args is not None:
self.star_args = self.star_args.mutate(visitor)
if self.dstar_args is not None:
@@ -1567,12 +1527,7 @@
return visitor.visitClass(self)
def mutate(self, visitor):
- newlist = []
- for n in self.bases:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.bases[:] = newlist
+ visitor._mutate_list(self.bases)
self.code = self.code.mutate(visitor)
return visitor.visitClass(self)
@@ -1688,7 +1643,11 @@
def mutate(self, visitor):
self.expr = self.expr.mutate(visitor)
- self.ops[:] = [(op_name, node.mutate(visitor)) for (op_name, node) in self.ops]
+ for i in range(len(self.ops)):
+
+ op_name, node = self.ops[i]
+
+ self.ops[i] = op_name, node.mutate(visitor)
return visitor.visitCompare(self)
@@ -1934,12 +1893,7 @@
return visitor.visitDecorators(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitDecorators(self)
def fget_nodes( space, self):
@@ -2032,7 +1986,11 @@
return visitor.visitDict(self)
def mutate(self, visitor):
- self.items[:] = [(n.mutate(visitor), o.mutate(visitor)) for (n, o) in self.items]
+ for i in range(len(self.items)):
+
+ n, o = self.items[i]
+
+ self.items[i] = n.mutate(visitor), o.mutate(visitor)
return visitor.visitDict(self)
@@ -2645,18 +2603,8 @@
def mutate(self, visitor):
if self.decorators is not None:
self.decorators = self.decorators.mutate(visitor)
- newlist = []
- for n in self.argnames:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.argnames[:] = newlist
- newlist = []
- for n in self.defaults:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.defaults[:] = newlist
+ visitor._mutate_list(self.argnames)
+ visitor._mutate_list(self.defaults)
self.code = self.code.mutate(visitor)
return visitor.visitFunction(self)
@@ -2865,12 +2813,7 @@
def mutate(self, visitor):
self.assign = self.assign.mutate(visitor)
self.iter = self.iter.mutate(visitor)
- newlist = []
- for n in self.ifs:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.ifs[:] = newlist
+ visitor._mutate_list(self.ifs)
return visitor.visitGenExprFor(self)
def fget_assign( space, self):
@@ -3015,12 +2958,7 @@
def mutate(self, visitor):
self.expr = self.expr.mutate(visitor)
- newlist = []
- for n in self.quals:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.quals[:] = newlist
+ visitor._mutate_list(self.quals)
return visitor.visitGenExprInner(self)
def fget_expr( space, self):
@@ -3231,7 +3169,11 @@
return visitor.visitIf(self)
def mutate(self, visitor):
- self.tests[:] = [(n.mutate(visitor), o.mutate(visitor)) for (n, o) in self.tests]
+ for i in range(len(self.tests)):
+
+ n, o = self.tests[i]
+
+ self.tests[i] = n.mutate(visitor), o.mutate(visitor)
if self.else_ is not None:
self.else_ = self.else_.mutate(visitor)
@@ -3516,18 +3458,8 @@
return visitor.visitLambda(self)
def mutate(self, visitor):
- newlist = []
- for n in self.argnames:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.argnames[:] = newlist
- newlist = []
- for n in self.defaults:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.defaults[:] = newlist
+ visitor._mutate_list(self.argnames)
+ visitor._mutate_list(self.defaults)
self.code = self.code.mutate(visitor)
return visitor.visitLambda(self)
@@ -3703,12 +3635,7 @@
return visitor.visitList(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitList(self)
def fget_nodes( space, self):
@@ -3787,12 +3714,7 @@
def mutate(self, visitor):
self.expr = self.expr.mutate(visitor)
- newlist = []
- for n in self.quals:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.quals[:] = newlist
+ visitor._mutate_list(self.quals)
return visitor.visitListComp(self)
def fget_expr( space, self):
@@ -3876,12 +3798,7 @@
def mutate(self, visitor):
self.assign = self.assign.mutate(visitor)
self.list = self.list.mutate(visitor)
- newlist = []
- for n in self.ifs:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.ifs[:] = newlist
+ visitor._mutate_list(self.ifs)
return visitor.visitListCompFor(self)
def fget_assign( space, self):
@@ -4355,12 +4272,7 @@
return visitor.visitOr(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitOr(self)
def fget_nodes( space, self):
@@ -4545,12 +4457,7 @@
return visitor.visitPrint(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
if self.dest is not None:
self.dest = self.dest.mutate(visitor)
return visitor.visitPrint(self)
@@ -4647,12 +4554,7 @@
return visitor.visitPrintnl(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
if self.dest is not None:
self.dest = self.dest.mutate(visitor)
return visitor.visitPrintnl(self)
@@ -5088,12 +4990,7 @@
return visitor.visitSliceobj(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitSliceobj(self)
def fget_nodes( space, self):
@@ -5166,12 +5063,7 @@
return visitor.visitStmt(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitStmt(self)
def fget_nodes( space, self):
@@ -5423,9 +5315,9 @@
def mutate(self, visitor):
self.body = self.body.mutate(visitor)
- newhandlers = []
+ for i in range(len(self.handlers)):
- for expr1, expr2, body in self.handlers:
+ expr1, expr2, body = self.handlers[i]
if expr1 is not None:
@@ -5439,9 +5331,7 @@
body = body.mutate(visitor)
- newhandlers.append((expr1, expr2, body))
-
- self.handlers[:] = newhandlers
+ self.handlers[i] = expr1, expr2, body
if self.else_ is not None:
self.else_ = self.else_.mutate(visitor)
@@ -5616,12 +5506,7 @@
return visitor.visitTuple(self)
def mutate(self, visitor):
- newlist = []
- for n in self.nodes:
- item = n.mutate(visitor)
- if item is not None:
- newlist.append(item)
- self.nodes[:] = newlist
+ visitor._mutate_list(self.nodes)
return visitor.visitTuple(self)
def fget_nodes( space, self):
@@ -6032,6 +5917,17 @@
def default(self, node):
for child in node.getChildNodes():
child.accept(self)
+ return node
+
+ def _mutate_list(self, lst):
+ i = 0
+ while i < len(lst):
+ item = lst[i].mutate(self)
+ if item is not None:
+ lst[i] = item
+ i += 1
+ else:
+ del lst[i]
def visitExpression(self, node):
return self.default(node)
Modified: pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.txt
==============================================================================
--- pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.txt (original)
+++ pypy/branch/astcompilertests/pypy/interpreter/astcompiler/ast.txt Wed Jan 2 13:44:27 2008
@@ -127,7 +127,9 @@
nodelist.append(node)
mutate(Compare.ops):
- self.ops[:] = [(op_name, node.mutate(visitor)) for (op_name, node) in self.ops]
+ for i in range(len(self.ops)):
+ op_name, node = self.ops[i]
+ self.ops[i] = op_name, node.mutate(visitor)
flatten_nodes(TryExcept.handlers):
# handlers is a list of triplets (expr1, expr2, body)
@@ -140,16 +142,15 @@
nodelist.append(body)
mutate(TryExcept.handlers):
- newhandlers = []
- for expr1, expr2, body in self.handlers:
+ for i in range(len(self.handlers)):
+ expr1, expr2, body = self.handlers[i]
if expr1 is not None:
expr1 = expr1.mutate(visitor)
if expr2 is not None:
expr2 = expr2.mutate(visitor)
if body is not None:
body = body.mutate(visitor)
- newhandlers.append((expr1, expr2, body))
- self.handlers[:] = newhandlers
+ self.handlers[i] = expr1, expr2, body
flatten_nodes(Dict.items):
# items is a list of couples (node (key), node (value))
@@ -158,7 +159,9 @@
nodelist.append(value)
mutate(Dict.items):
- self.items[:] = [(n.mutate(visitor), o.mutate(visitor)) for (n, o) in self.items]
+ for i in range(len(self.items)):
+ n, o = self.items[i]
+ self.items[i] = n.mutate(visitor), o.mutate(visitor)
flatten_nodes(If.tests):
# tests is a list of couples (node (test), node (suite))
@@ -167,7 +170,9 @@
nodelist.append(suite)
mutate(If.tests):
- self.tests[:] = [(n.mutate(visitor), o.mutate(visitor)) for (n, o) in self.tests]
+ for i in range(len(self.tests)):
+ n, o = self.tests[i]
+ self.tests[i] = n.mutate(visitor), o.mutate(visitor)
AssTuple.getArgNames(self):
argnames = []
Modified: pypy/branch/astcompilertests/pypy/interpreter/astcompiler/astgen.py
==============================================================================
--- pypy/branch/astcompilertests/pypy/interpreter/astcompiler/astgen.py (original)
+++ pypy/branch/astcompilertests/pypy/interpreter/astcompiler/astgen.py Wed Jan 2 13:44:27 2008
@@ -324,12 +324,8 @@
print >> buf, " if self.%s is not None:" % (argname,)
print >> buf, " self.%s = self.%s.mutate(visitor)" % (argname,argname)
elif self.argprops[argname] == P_NESTED:
- print >> buf, " newlist = []"
- print >> buf, " for n in self.%s:"%(argname)
- print >> buf, " item = n.mutate(visitor)"
- print >> buf, " if item is not None:"
- print >> buf, " newlist.append(item)"
- print >> buf, " self.%s[:] = newlist"%(argname)
+ print >> buf, " visitor._mutate_list(self.%s)"%(
+ argname,)
print >> buf, " return visitor.visit%s(self)" % self.name
def _gen_fget_func(self, buf, attr, prop ):
@@ -602,6 +598,17 @@
def default(self, node):
for child in node.getChildNodes():
child.accept(self)
+ return node
+
+ def _mutate_list(self, lst):
+ i = 0
+ while i < len(lst):
+ item = lst[i].mutate(self)
+ if item is not None:
+ lst[i] = item
+ i += 1
+ else:
+ del lst[i]
def visitExpression(self, node):
return self.default(node)
@@ -695,7 +702,7 @@
def accept(self, visitor):
raise NotImplementedError
def mutate(self, visitor):
- return visitor.visitNode(self)
+ raise NotImplementedError
def flatten(self):
res = []
nodes = self.getChildNodes()
Modified: pypy/branch/astcompilertests/pypy/interpreter/astcompiler/opt.py
==============================================================================
--- pypy/branch/astcompilertests/pypy/interpreter/astcompiler/opt.py (original)
+++ pypy/branch/astcompilertests/pypy/interpreter/astcompiler/opt.py Wed Jan 2 13:44:27 2008
@@ -84,11 +84,6 @@
def __init__(self, space):
self.space = space
- def default(self, node):
- for child in node.getChildNodes():
- child.accept(self)
- return node
-
def _visitUnaryOp(self, node, constant_fold):
expr = node.expr
if isinstance(expr, ast.Const):
Modified: pypy/branch/astcompilertests/pypy/interpreter/astcompiler/test/test_ast.py
==============================================================================
--- pypy/branch/astcompilertests/pypy/interpreter/astcompiler/test/test_ast.py (original)
+++ pypy/branch/astcompilertests/pypy/interpreter/astcompiler/test/test_ast.py Wed Jan 2 13:44:27 2008
@@ -2,14 +2,7 @@
from pypy.module.recparser.pyparser import source2ast
from pypy.interpreter.pyparser.test.test_astbuilder import FakeSpace
-class BaseVisitor:
- def __getattr__(self, attr):
- if attr.startswith('visit'):
- return self.default
- else:
- raise AttributeError(attr)
- def default(self, node):
- return node
+class BaseVisitor(ast.ASTVisitor):
def visitAdd(self, node):
return ast.Const(3)
More information about the pypy-svn
mailing list