mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-08 13:45:01 +08:00
Fix diff parser: Avoid indentation issues
This commit is contained in:
@@ -564,6 +564,10 @@ class _NodesTree(object):
|
|||||||
|
|
||||||
Returns the number of tree nodes that were copied.
|
Returns the number of tree nodes that were copied.
|
||||||
"""
|
"""
|
||||||
|
if tree_nodes[0].type == 'error_leaf' and tree_nodes[0].token_type == 'INDENT':
|
||||||
|
# Avoid copying error indents. Just parse them again.
|
||||||
|
return []
|
||||||
|
|
||||||
self._get_insertion_node(tree_nodes[0])
|
self._get_insertion_node(tree_nodes[0])
|
||||||
|
|
||||||
new_nodes, self._working_stack = self._copy_nodes(
|
new_nodes, self._working_stack = self._copy_nodes(
|
||||||
|
|||||||
@@ -774,3 +774,47 @@ def test_parentheses_before_method(differ):
|
|||||||
differ.initialize(code1)
|
differ.initialize(code1)
|
||||||
differ.parse(code2, parsers=2, copies=1, expect_error_leaves=True)
|
differ.parse(code2, parsers=2, copies=1, expect_error_leaves=True)
|
||||||
differ.parse(code1, parsers=1, copies=1)
|
differ.parse(code1, parsers=1, copies=1)
|
||||||
|
|
||||||
|
|
||||||
|
def test_indentation_issues(differ):
|
||||||
|
code1 = dedent('''\
|
||||||
|
class C:
|
||||||
|
def f():
|
||||||
|
1
|
||||||
|
if 2:
|
||||||
|
return 3
|
||||||
|
|
||||||
|
def g():
|
||||||
|
to_be_removed
|
||||||
|
pass
|
||||||
|
''')
|
||||||
|
|
||||||
|
code2 = dedent('''\
|
||||||
|
class C:
|
||||||
|
def f():
|
||||||
|
1
|
||||||
|
``something``, very ``weird``).
|
||||||
|
if 2:
|
||||||
|
return 3
|
||||||
|
|
||||||
|
def g():
|
||||||
|
to_be_removed
|
||||||
|
pass
|
||||||
|
''')
|
||||||
|
|
||||||
|
code3 = dedent('''\
|
||||||
|
class C:
|
||||||
|
def f():
|
||||||
|
1
|
||||||
|
if 2:
|
||||||
|
return 3
|
||||||
|
|
||||||
|
def g():
|
||||||
|
pass
|
||||||
|
''')
|
||||||
|
|
||||||
|
differ.initialize(code1)
|
||||||
|
differ.parse(code2, parsers=1, copies=2, expect_error_leaves=True)
|
||||||
|
differ.parse(code1, parsers=2, copies=1)
|
||||||
|
differ.parse(code3, parsers=1, copies=1)
|
||||||
|
differ.parse(code1, parsers=1, copies=2)
|
||||||
|
|||||||
Reference in New Issue
Block a user