mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-07 05:14:29 +08:00
Fix diff parser: positioning of functions if decorators were removed
This commit is contained in:
@@ -638,7 +638,11 @@ class _NodesTree(object):
|
|||||||
|
|
||||||
if new_nodes:
|
if new_nodes:
|
||||||
if had_valid_suite_last:
|
if had_valid_suite_last:
|
||||||
last_line_offset_leaf = new_nodes[-1].children[-2].get_last_leaf()
|
last = new_nodes[-1]
|
||||||
|
if last.type == 'decorated':
|
||||||
|
last = last.children[-1]
|
||||||
|
last_line_offset_leaf = last.children[-2].get_last_leaf()
|
||||||
|
assert last_line_offset_leaf == ':'
|
||||||
else:
|
else:
|
||||||
last_line_offset_leaf = new_nodes[-1].get_last_leaf()
|
last_line_offset_leaf = new_nodes[-1].get_last_leaf()
|
||||||
tos.add_tree_nodes(new_nodes, line_offset, last_line_offset_leaf)
|
tos.add_tree_nodes(new_nodes, line_offset, last_line_offset_leaf)
|
||||||
|
|||||||
@@ -665,3 +665,39 @@ def test_function_deletion(differ):
|
|||||||
differ.initialize(code1)
|
differ.initialize(code1)
|
||||||
differ.parse(code2, parsers=1, copies=0, expect_error_leaves=True)
|
differ.parse(code2, parsers=1, copies=0, expect_error_leaves=True)
|
||||||
differ.parse(code1, parsers=1, copies=0)
|
differ.parse(code1, parsers=1, copies=0)
|
||||||
|
|
||||||
|
|
||||||
|
def test_docstring_removal(differ):
|
||||||
|
code1 = dedent('''\
|
||||||
|
class E(Exception):
|
||||||
|
"""
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
"""
|
||||||
|
|
||||||
|
class S(object):
|
||||||
|
@property
|
||||||
|
def f(self):
|
||||||
|
return cmd
|
||||||
|
def __repr__(self):
|
||||||
|
return cmd2
|
||||||
|
''')
|
||||||
|
|
||||||
|
code2 = dedent('''\
|
||||||
|
class E(Exception):
|
||||||
|
"""
|
||||||
|
1
|
||||||
|
3
|
||||||
|
"""
|
||||||
|
|
||||||
|
class S(object):
|
||||||
|
@property
|
||||||
|
def f(self):
|
||||||
|
return cmd
|
||||||
|
return cmd2
|
||||||
|
''')
|
||||||
|
|
||||||
|
differ.initialize(code1)
|
||||||
|
differ.parse(code2, parsers=1, copies=2)
|
||||||
|
differ.parse(code1, parsers=2, copies=1)
|
||||||
|
|||||||
Reference in New Issue
Block a user