mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
bpo-40726: handle uninitalized end_lineno on ast.increment_lineno (GH-20312)
(cherry picked from commit 8f4380d2f5
)
Co-authored-by: Batuhan Taskaya <batuhanosmantaskaya@gmail.com>
This commit is contained in:
parent
ea680631b4
commit
a1320989f5
3 changed files with 23 additions and 3 deletions
13
Lib/ast.py
13
Lib/ast.py
|
@ -180,7 +180,11 @@ def copy_location(new_node, old_node):
|
|||
for attr in 'lineno', 'col_offset', 'end_lineno', 'end_col_offset':
|
||||
if attr in old_node._attributes and attr in new_node._attributes:
|
||||
value = getattr(old_node, attr, None)
|
||||
if value is not None:
|
||||
# end_lineno and end_col_offset are optional attributes, and they
|
||||
# should be copied whether the value is None or not.
|
||||
if value is not None or (
|
||||
hasattr(old_node, attr) and attr.startswith("end_")
|
||||
):
|
||||
setattr(new_node, attr, value)
|
||||
return new_node
|
||||
|
||||
|
@ -229,8 +233,11 @@ def increment_lineno(node, n=1):
|
|||
for child in walk(node):
|
||||
if 'lineno' in child._attributes:
|
||||
child.lineno = getattr(child, 'lineno', 0) + n
|
||||
if 'end_lineno' in child._attributes:
|
||||
child.end_lineno = getattr(child, 'end_lineno', 0) + n
|
||||
if (
|
||||
"end_lineno" in child._attributes
|
||||
and (end_lineno := getattr(child, "end_lineno", 0)) is not None
|
||||
):
|
||||
child.end_lineno = end_lineno + n
|
||||
return node
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue