mirror of https://github.com/python/cpython
Merged revisions 87876-87877 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r87876 | georg.brandl | 2011-01-09 08:38:51 +0100 (So, 09 Jan 2011) | 1 line #10869: do not visit root node twice in ast.increment_lineno(). ........ r87877 | georg.brandl | 2011-01-09 08:50:48 +0100 (So, 09 Jan 2011) | 1 line Add missing line. ........
This commit is contained in:
parent
cec4b4fa04
commit
6adb97939b
|
@ -187,9 +187,9 @@ and classes for traversing abstract syntax trees:
|
||||||
|
|
||||||
.. function:: walk(node)
|
.. function:: walk(node)
|
||||||
|
|
||||||
Recursively yield all child nodes of *node*, in no specified order. This is
|
Recursively yield all descendant nodes in the tree starting at *node*
|
||||||
useful if you only want to modify nodes in place and don't care about the
|
(including *node* itself), in no specified order. This is useful if you only
|
||||||
context.
|
want to modify nodes in place and don't care about the context.
|
||||||
|
|
||||||
|
|
||||||
.. class:: NodeVisitor()
|
.. class:: NodeVisitor()
|
||||||
|
|
|
@ -152,8 +152,6 @@ def increment_lineno(node, n=1):
|
||||||
Increment the line number of each node in the tree starting at *node* by *n*.
|
Increment the line number of each node in the tree starting at *node* by *n*.
|
||||||
This is useful to "move code" to a different location in a file.
|
This is useful to "move code" to a different location in a file.
|
||||||
"""
|
"""
|
||||||
if 'lineno' in node._attributes:
|
|
||||||
node.lineno = getattr(node, 'lineno', 0) + n
|
|
||||||
for child in walk(node):
|
for child in walk(node):
|
||||||
if 'lineno' in child._attributes:
|
if 'lineno' in child._attributes:
|
||||||
child.lineno = getattr(child, 'lineno', 0) + n
|
child.lineno = getattr(child, 'lineno', 0) + n
|
||||||
|
@ -204,9 +202,9 @@ def get_docstring(node, clean=True):
|
||||||
|
|
||||||
def walk(node):
|
def walk(node):
|
||||||
"""
|
"""
|
||||||
Recursively yield all child nodes of *node*, in no specified order. This is
|
Recursively yield all descendant nodes in the tree starting at *node*
|
||||||
useful if you only want to modify nodes in place and don't care about the
|
(including *node* itself), in no specified order. This is useful if you
|
||||||
context.
|
only want to modify nodes in place and don't care about the context.
|
||||||
"""
|
"""
|
||||||
from collections import deque
|
from collections import deque
|
||||||
todo = deque([node])
|
todo = deque([node])
|
||||||
|
|
|
@ -264,6 +264,14 @@ class ASTHelpers_Test(unittest.TestCase):
|
||||||
'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, '
|
'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, '
|
||||||
'col_offset=0))'
|
'col_offset=0))'
|
||||||
)
|
)
|
||||||
|
# issue10869: do not increment lineno of root twice
|
||||||
|
src = ast.parse('1 + 1', mode='eval')
|
||||||
|
self.assertEqual(ast.increment_lineno(src.body, n=3), src.body)
|
||||||
|
self.assertEqual(ast.dump(src, include_attributes=True),
|
||||||
|
'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), '
|
||||||
|
'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, '
|
||||||
|
'col_offset=0))'
|
||||||
|
)
|
||||||
|
|
||||||
def test_iter_fields(self):
|
def test_iter_fields(self):
|
||||||
node = ast.parse('foo()', mode='eval')
|
node = ast.parse('foo()', mode='eval')
|
||||||
|
|
|
@ -848,6 +848,7 @@ Cliff Wells
|
||||||
Rickard Westman
|
Rickard Westman
|
||||||
Jeff Wheeler
|
Jeff Wheeler
|
||||||
Christopher White
|
Christopher White
|
||||||
|
David White
|
||||||
Mats Wichmann
|
Mats Wichmann
|
||||||
Truida Wiedijk
|
Truida Wiedijk
|
||||||
Felix Wiemann
|
Felix Wiemann
|
||||||
|
|
|
@ -36,6 +36,9 @@ Library
|
||||||
dependent, but ``time.mktime`` will now accept full range supported
|
dependent, but ``time.mktime`` will now accept full range supported
|
||||||
by the OS. Conversion of 2-digit years to 4-digit is deprecated.
|
by the OS. Conversion of 2-digit years to 4-digit is deprecated.
|
||||||
|
|
||||||
|
- Issue #10869: Fixed bug where ast.increment_lineno modified the root
|
||||||
|
node twice.
|
||||||
|
|
||||||
- Issue #7858: Raise an error properly when os.utime() fails under Windows
|
- Issue #7858: Raise an error properly when os.utime() fails under Windows
|
||||||
on an existing file.
|
on an existing file.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue