Author: Ronan Lamy <ronan.l...@gmail.com> Branch: py3.5 Changeset: r89712:686b6385285d Date: 2017-01-24 00:14 +0000 http://bitbucket.org/pypy/pypy/changeset/686b6385285d/
Log: hg merge default 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 @@ -31,6 +31,7 @@ class AST(object): __metaclass__ = extendabletype + #_attrs_ = ['lineno', 'col_offset'] def walkabout(self, visitor): raise AssertionError("walkabout() implementation not provided") @@ -184,7 +185,9 @@ def mutate_over(self, visitor): if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) return visitor.visit_Module(self) def to_object(self, space): @@ -217,7 +220,9 @@ def mutate_over(self, visitor): if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) return visitor.visit_Interactive(self) def to_object(self, space): @@ -279,7 +284,9 @@ def mutate_over(self, visitor): if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) return visitor.visit_Suite(self) def to_object(self, space): @@ -380,9 +387,13 @@ def mutate_over(self, visitor): self.args = self.args.mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.decorator_list: - visitor._mutate_sequence(self.decorator_list) + for i in range(len(self.decorator_list)): + if self.decorator_list[i] is not None: + self.decorator_list[i] = self.decorator_list[i].mutate_over(visitor) if self.returns: self.returns = self.returns.mutate_over(visitor) return visitor.visit_FunctionDef(self) @@ -456,9 +467,13 @@ def mutate_over(self, visitor): self.args = self.args.mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.decorator_list: - visitor._mutate_sequence(self.decorator_list) + for i in range(len(self.decorator_list)): + if self.decorator_list[i] is not None: + self.decorator_list[i] = self.decorator_list[i].mutate_over(visitor) if self.returns: self.returns = self.returns.mutate_over(visitor) return visitor.visit_AsyncFunctionDef(self) @@ -531,13 +546,21 @@ def mutate_over(self, visitor): if self.bases: - visitor._mutate_sequence(self.bases) + for i in range(len(self.bases)): + if self.bases[i] is not None: + self.bases[i] = self.bases[i].mutate_over(visitor) if self.keywords: - visitor._mutate_sequence(self.keywords) + for i in range(len(self.keywords)): + if self.keywords[i] is not None: + self.keywords[i] = self.keywords[i].mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.decorator_list: - visitor._mutate_sequence(self.decorator_list) + for i in range(len(self.decorator_list)): + if self.decorator_list[i] is not None: + self.decorator_list[i] = self.decorator_list[i].mutate_over(visitor) return visitor.visit_ClassDef(self) def to_object(self, space): @@ -649,7 +672,9 @@ def mutate_over(self, visitor): if self.targets: - visitor._mutate_sequence(self.targets) + for i in range(len(self.targets)): + if self.targets[i] is not None: + self.targets[i] = self.targets[i].mutate_over(visitor) return visitor.visit_Delete(self) def to_object(self, space): @@ -692,7 +717,9 @@ def mutate_over(self, visitor): if self.targets: - visitor._mutate_sequence(self.targets) + for i in range(len(self.targets)): + if self.targets[i] is not None: + self.targets[i] = self.targets[i].mutate_over(visitor) self.value = self.value.mutate_over(visitor) return visitor.visit_Assign(self) @@ -799,9 +826,13 @@ self.target = self.target.mutate_over(visitor) self.iter = self.iter.mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.orelse: - visitor._mutate_sequence(self.orelse) + for i in range(len(self.orelse)): + if self.orelse[i] is not None: + self.orelse[i] = self.orelse[i].mutate_over(visitor) return visitor.visit_For(self) def to_object(self, space): @@ -869,9 +900,13 @@ self.target = self.target.mutate_over(visitor) self.iter = self.iter.mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.orelse: - visitor._mutate_sequence(self.orelse) + for i in range(len(self.orelse)): + if self.orelse[i] is not None: + self.orelse[i] = self.orelse[i].mutate_over(visitor) return visitor.visit_AsyncFor(self) def to_object(self, space): @@ -937,9 +972,13 @@ def mutate_over(self, visitor): self.test = self.test.mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.orelse: - visitor._mutate_sequence(self.orelse) + for i in range(len(self.orelse)): + if self.orelse[i] is not None: + self.orelse[i] = self.orelse[i].mutate_over(visitor) return visitor.visit_While(self) def to_object(self, space): @@ -999,9 +1038,13 @@ def mutate_over(self, visitor): self.test = self.test.mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.orelse: - visitor._mutate_sequence(self.orelse) + for i in range(len(self.orelse)): + if self.orelse[i] is not None: + self.orelse[i] = self.orelse[i].mutate_over(visitor) return visitor.visit_If(self) def to_object(self, space): @@ -1059,9 +1102,13 @@ def mutate_over(self, visitor): if self.items: - visitor._mutate_sequence(self.items) + for i in range(len(self.items)): + if self.items[i] is not None: + self.items[i] = self.items[i].mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) return visitor.visit_With(self) def to_object(self, space): @@ -1113,9 +1160,13 @@ def mutate_over(self, visitor): if self.items: - visitor._mutate_sequence(self.items) + for i in range(len(self.items)): + if self.items[i] is not None: + self.items[i] = self.items[i].mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) return visitor.visit_AsyncWith(self) def to_object(self, space): @@ -1213,13 +1264,21 @@ def mutate_over(self, visitor): if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) if self.handlers: - visitor._mutate_sequence(self.handlers) + for i in range(len(self.handlers)): + if self.handlers[i] is not None: + self.handlers[i] = self.handlers[i].mutate_over(visitor) if self.orelse: - visitor._mutate_sequence(self.orelse) + for i in range(len(self.orelse)): + if self.orelse[i] is not None: + self.orelse[i] = self.orelse[i].mutate_over(visitor) if self.finalbody: - visitor._mutate_sequence(self.finalbody) + for i in range(len(self.finalbody)): + if self.finalbody[i] is not None: + self.finalbody[i] = self.finalbody[i].mutate_over(visitor) return visitor.visit_Try(self) def to_object(self, space): @@ -1333,7 +1392,9 @@ def mutate_over(self, visitor): if self.names: - visitor._mutate_sequence(self.names) + for i in range(len(self.names)): + if self.names[i] is not None: + self.names[i] = self.names[i].mutate_over(visitor) return visitor.visit_Import(self) def to_object(self, space): @@ -1377,7 +1438,9 @@ def mutate_over(self, visitor): if self.names: - visitor._mutate_sequence(self.names) + for i in range(len(self.names)): + if self.names[i] is not None: + self.names[i] = self.names[i].mutate_over(visitor) return visitor.visit_ImportFrom(self) def to_object(self, space): @@ -1706,7 +1769,9 @@ def mutate_over(self, visitor): if self.values: - visitor._mutate_sequence(self.values) + for i in range(len(self.values)): + if self.values[i] is not None: + self.values[i] = self.values[i].mutate_over(visitor) return visitor.visit_BoolOp(self) def to_object(self, space): @@ -1953,9 +2018,13 @@ def mutate_over(self, visitor): if self.keys: - visitor._mutate_sequence(self.keys) + for i in range(len(self.keys)): + if self.keys[i] is not None: + self.keys[i] = self.keys[i].mutate_over(visitor) if self.values: - visitor._mutate_sequence(self.values) + for i in range(len(self.values)): + if self.values[i] is not None: + self.values[i] = self.values[i].mutate_over(visitor) return visitor.visit_Dict(self) def to_object(self, space): @@ -2006,7 +2075,9 @@ def mutate_over(self, visitor): if self.elts: - visitor._mutate_sequence(self.elts) + for i in range(len(self.elts)): + if self.elts[i] is not None: + self.elts[i] = self.elts[i].mutate_over(visitor) return visitor.visit_Set(self) def to_object(self, space): @@ -2050,7 +2121,9 @@ def mutate_over(self, visitor): self.elt = self.elt.mutate_over(visitor) if self.generators: - visitor._mutate_sequence(self.generators) + for i in range(len(self.generators)): + if self.generators[i] is not None: + self.generators[i] = self.generators[i].mutate_over(visitor) return visitor.visit_ListComp(self) def to_object(self, space): @@ -2100,7 +2173,9 @@ def mutate_over(self, visitor): self.elt = self.elt.mutate_over(visitor) if self.generators: - visitor._mutate_sequence(self.generators) + for i in range(len(self.generators)): + if self.generators[i] is not None: + self.generators[i] = self.generators[i].mutate_over(visitor) return visitor.visit_SetComp(self) def to_object(self, space): @@ -2152,7 +2227,9 @@ self.key = self.key.mutate_over(visitor) self.value = self.value.mutate_over(visitor) if self.generators: - visitor._mutate_sequence(self.generators) + for i in range(len(self.generators)): + if self.generators[i] is not None: + self.generators[i] = self.generators[i].mutate_over(visitor) return visitor.visit_DictComp(self) def to_object(self, space): @@ -2208,7 +2285,9 @@ def mutate_over(self, visitor): self.elt = self.elt.mutate_over(visitor) if self.generators: - visitor._mutate_sequence(self.generators) + for i in range(len(self.generators)): + if self.generators[i] is not None: + self.generators[i] = self.generators[i].mutate_over(visitor) return visitor.visit_GeneratorExp(self) def to_object(self, space): @@ -2372,7 +2451,9 @@ def mutate_over(self, visitor): self.left = self.left.mutate_over(visitor) if self.comparators: - visitor._mutate_sequence(self.comparators) + for i in range(len(self.comparators)): + if self.comparators[i] is not None: + self.comparators[i] = self.comparators[i].mutate_over(visitor) return visitor.visit_Compare(self) def to_object(self, space): @@ -2432,9 +2513,13 @@ def mutate_over(self, visitor): self.func = self.func.mutate_over(visitor) if self.args: - visitor._mutate_sequence(self.args) + for i in range(len(self.args)): + if self.args[i] is not None: + self.args[i] = self.args[i].mutate_over(visitor) if self.keywords: - visitor._mutate_sequence(self.keywords) + for i in range(len(self.keywords)): + if self.keywords[i] is not None: + self.keywords[i] = self.keywords[i].mutate_over(visitor) return visitor.visit_Call(self) def to_object(self, space): @@ -2864,7 +2949,9 @@ def mutate_over(self, visitor): if self.elts: - visitor._mutate_sequence(self.elts) + for i in range(len(self.elts)): + if self.elts[i] is not None: + self.elts[i] = self.elts[i].mutate_over(visitor) return visitor.visit_List(self) def to_object(self, space): @@ -2913,7 +3000,9 @@ def mutate_over(self, visitor): if self.elts: - visitor._mutate_sequence(self.elts) + for i in range(len(self.elts)): + if self.elts[i] is not None: + self.elts[i] = self.elts[i].mutate_over(visitor) return visitor.visit_Tuple(self) def to_object(self, space): @@ -3119,7 +3208,9 @@ def mutate_over(self, visitor): if self.dims: - visitor._mutate_sequence(self.dims) + for i in range(len(self.dims)): + if self.dims[i] is not None: + self.dims[i] = self.dims[i].mutate_over(visitor) return visitor.visit_ExtSlice(self) def to_object(self, space): @@ -3487,7 +3578,9 @@ self.target = self.target.mutate_over(visitor) self.iter = self.iter.mutate_over(visitor) if self.ifs: - visitor._mutate_sequence(self.ifs) + for i in range(len(self.ifs)): + if self.ifs[i] is not None: + self.ifs[i] = self.ifs[i].mutate_over(visitor) return visitor.visit_comprehension(self) def walkabout(self, visitor): @@ -3555,7 +3648,9 @@ if self.type: self.type = self.type.mutate_over(visitor) if self.body: - visitor._mutate_sequence(self.body) + for i in range(len(self.body)): + if self.body[i] is not None: + self.body[i] = self.body[i].mutate_over(visitor) return visitor.visit_ExceptHandler(self) def to_object(self, space): @@ -3606,17 +3701,25 @@ def mutate_over(self, visitor): if self.args: - visitor._mutate_sequence(self.args) + for i in range(len(self.args)): + if self.args[i] is not None: + self.args[i] = self.args[i].mutate_over(visitor) if self.vararg: self.vararg = self.vararg.mutate_over(visitor) if self.kwonlyargs: - visitor._mutate_sequence(self.kwonlyargs) + for i in range(len(self.kwonlyargs)): + if self.kwonlyargs[i] is not None: + self.kwonlyargs[i] = self.kwonlyargs[i].mutate_over(visitor) if self.kw_defaults: - visitor._mutate_sequence(self.kw_defaults) + for i in range(len(self.kw_defaults)): + if self.kw_defaults[i] is not None: + self.kw_defaults[i] = self.kw_defaults[i].mutate_over(visitor) if self.kwarg: self.kwarg = self.kwarg.mutate_over(visitor) if self.defaults: - visitor._mutate_sequence(self.defaults) + for i in range(len(self.defaults)): + if self.defaults[i] is not None: + self.defaults[i] = self.defaults[i].mutate_over(visitor) return visitor.visit_arguments(self) def walkabout(self, visitor): @@ -3827,11 +3930,6 @@ def default_visitor(self, node): raise NodeVisitorNotImplemented - def _mutate_sequence(self, seq): - for i in range(len(seq)): - if seq[i] is not None: - seq[i] = seq[i].mutate_over(self) - def visit_Module(self, node): return self.default_visitor(node) def visit_Interactive(self, node): 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 @@ -257,12 +257,19 @@ else: level = 2 if field.seq: - sub = (field.name,) - self.emit("visitor._mutate_sequence(self.%s)" % sub, level) + sub = field.name + self.emit("for i in range(len(self.{})):".format(sub), + level) + self.emit("if self.{}[i] is not None:".format(sub), + level + 1) + self.emit( + "self.{0}[i] = self.{0}[i].mutate_over(visitor)".format(sub), + level + 2) else: - sub = (field.name, field.name) - self.emit("self.%s = self.%s.mutate_over(visitor)" % sub, - level) + sub = field.name + self.emit( + "self.{0} = self.{0}.mutate_over(visitor)".format(sub), + level) self.emit("return visitor.visit_%s(self)" % (name,), 2) self.emit("") @@ -305,11 +312,6 @@ self.emit("def default_visitor(self, node):", 1) self.emit("raise NodeVisitorNotImplemented", 2) self.emit("") - self.emit("def _mutate_sequence(self, seq):", 1) - self.emit("for i in range(len(seq)):", 2) - self.emit("if seq[i] is not None:", 3) - self.emit("seq[i] = seq[i].mutate_over(self)", 4) - self.emit("") super(ASTVisitorVisitor, self).visitModule(mod) self.emit("") @@ -451,6 +453,7 @@ class AST(object): __metaclass__ = extendabletype + #_attrs_ = ['lineno', 'col_offset'] def walkabout(self, visitor): raise AssertionError("walkabout() implementation not provided") _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit