1.1 --- a/compiler/ast.py Wed May 01 23:23:54 2013 +0200
1.2 +++ b/compiler/ast.py Sun Jun 30 19:53:18 2013 +0200
1.3 @@ -1,6 +1,6 @@
1.4 """Python abstract syntax node definitions
1.5
1.6 -This file is automatically generated by Tools/compiler/astgen.py
1.7 +This file was originally generated by Tools/compiler/astgen.py
1.8 """
1.9 from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
1.10
1.11 @@ -26,6 +26,18 @@
1.12 l.append(elt)
1.13 return l
1.14
1.15 +def flatten_assignment(node):
1.16 + l = []
1.17 + if isinstance(node, (AssList, AssTuple)):
1.18 + for n in node.nodes:
1.19 + l += flatten_assignment(n)
1.20 + else:
1.21 + l.append(node)
1.22 + return l
1.23 +
1.24 +def is_deletion(node):
1.25 + return isinstance(node, (AssAttr, AssName)) and node.flags == "OP_DELETE"
1.26 +
1.27 def docstring(s):
1.28 if s.find("\n") != -1:
1.29 if s.find("'''") != -1:
1.30 @@ -248,7 +260,11 @@
1.31 return "AssList(%r)" % (self.nodes,)
1.32
1.33 def __str__(self):
1.34 - return "[%s]" % ", ".join(map(str, self.nodes))
1.35 + nodes = flatten_assignment(self)
1.36 + if nodes and is_deletion(nodes[0]):
1.37 + return "; ".join(map(str, self.nodes))
1.38 + else:
1.39 + return "[%s]" % ", ".join(map(str, self.nodes))
1.40
1.41 def visit(self, visitor, *args):
1.42 return visitor.visitAssList(self, *args)
1.43 @@ -296,7 +312,11 @@
1.44 return "AssTuple(%r)" % (self.nodes,)
1.45
1.46 def __str__(self):
1.47 - return "(%s)" % ", ".join(map(str, self.nodes))
1.48 + nodes = flatten_assignment(self)
1.49 + if nodes and is_deletion(nodes[0]):
1.50 + return "; ".join(map(str, self.nodes))
1.51 + else:
1.52 + return "(%s)" % ", ".join(map(str, self.nodes))
1.53
1.54 def visit(self, visitor, *args):
1.55 return visitor.visitAssTuple(self, *args)