mirror of
https://github.com/davidhalter/parso.git
synced 2026-02-28 04:22:37 +08:00
Fix newline endings and a few parser/copy counts
This commit is contained in:
@@ -271,10 +271,9 @@ class DiffParser(object):
|
|||||||
self._parse(self._nodes_tree.parsed_until_line + 1)
|
self._parse(self._nodes_tree.parsed_until_line + 1)
|
||||||
elif not copied_nodes:
|
elif not copied_nodes:
|
||||||
# We have copied as much as possible (but definitely not too
|
# We have copied as much as possible (but definitely not too
|
||||||
# much). Therefore we just parse the rest.
|
# much). Therefore we just parse a bit more.
|
||||||
# We might not reach the end, because there's a statement
|
self._parse(self._nodes_tree.parsed_until_line + 1)
|
||||||
# that is not finished.
|
copied_nodes = [None]
|
||||||
self._parse(until_line_new)
|
|
||||||
else:
|
else:
|
||||||
p_children = line_stmt.parent.children
|
p_children = line_stmt.parent.children
|
||||||
index = p_children.index(line_stmt)
|
index = p_children.index(line_stmt)
|
||||||
@@ -393,10 +392,6 @@ class DiffParser(object):
|
|||||||
typ, string, start_pos, prefix = next(tokens)
|
typ, string, start_pos, prefix = next(tokens)
|
||||||
if '\n' in prefix or '\r' in prefix:
|
if '\n' in prefix or '\r' in prefix:
|
||||||
prefix = re.sub(r'[^\n\r]+\Z', '', prefix)
|
prefix = re.sub(r'[^\n\r]+\Z', '', prefix)
|
||||||
else:
|
|
||||||
# This is basically the next line and it still needs to
|
|
||||||
# be parserd.
|
|
||||||
prefix = ''
|
|
||||||
yield PythonToken(
|
yield PythonToken(
|
||||||
PythonTokenTypes.ENDMARKER, '',
|
PythonTokenTypes.ENDMARKER, '',
|
||||||
(start_pos[0] + line_offset, 0),
|
(start_pos[0] + line_offset, 0),
|
||||||
|
|||||||
@@ -67,8 +67,8 @@ class Differ(object):
|
|||||||
|
|
||||||
error_node = _check_error_leaves_nodes(new_module)
|
error_node = _check_error_leaves_nodes(new_module)
|
||||||
assert expect_error_leaves == (error_node is not None), error_node
|
assert expect_error_leaves == (error_node is not None), error_node
|
||||||
#assert diff_parser._parser_count == parsers
|
assert diff_parser._parser_count == parsers
|
||||||
#assert diff_parser._copy_count == copies
|
assert diff_parser._copy_count == copies
|
||||||
return new_module
|
return new_module
|
||||||
|
|
||||||
|
|
||||||
@@ -726,7 +726,7 @@ def test_paren_in_strange_position(differ):
|
|||||||
|
|
||||||
differ.initialize(code1)
|
differ.initialize(code1)
|
||||||
differ.parse(code2, parsers=1, copies=2, expect_error_leaves=True)
|
differ.parse(code2, parsers=1, copies=2, expect_error_leaves=True)
|
||||||
differ.parse(code1, parsers=1, copies=1)
|
differ.parse(code1, parsers=0, copies=2)
|
||||||
|
|
||||||
|
|
||||||
def insert_line_into_code(code, index, line):
|
def insert_line_into_code(code, index, line):
|
||||||
@@ -818,9 +818,9 @@ def test_indentation_issues(differ):
|
|||||||
''')
|
''')
|
||||||
|
|
||||||
differ.initialize(code1)
|
differ.initialize(code1)
|
||||||
differ.parse(code2, parsers=1, copies=2, expect_error_leaves=True)
|
differ.parse(code2, parsers=2, copies=2, expect_error_leaves=True)
|
||||||
differ.parse(code1, parsers=2, copies=1)
|
differ.parse(code1, copies=2)
|
||||||
differ.parse(code3, parsers=1, copies=1)
|
differ.parse(code3, parsers=2, copies=1)
|
||||||
differ.parse(code1, parsers=1, copies=2)
|
differ.parse(code1, parsers=1, copies=2)
|
||||||
|
|
||||||
|
|
||||||
@@ -854,7 +854,7 @@ def test_error_dedent_issues(differ):
|
|||||||
''')
|
''')
|
||||||
|
|
||||||
differ.initialize(code1)
|
differ.initialize(code1)
|
||||||
differ.parse(code2, parsers=5, copies=1, expect_error_leaves=True)
|
differ.parse(code2, parsers=6, copies=2, expect_error_leaves=True)
|
||||||
differ.parse(code1, parsers=1, copies=0)
|
differ.parse(code1, parsers=1, copies=0)
|
||||||
|
|
||||||
|
|
||||||
@@ -998,5 +998,17 @@ def test_dedent_end_positions(differ):
|
|||||||
5}
|
5}
|
||||||
''')
|
''')
|
||||||
differ.initialize(code1)
|
differ.initialize(code1)
|
||||||
differ.parse(code2, copies=6, parsers=14, expect_error_leaves=True)
|
differ.parse(code2, parsers=1, expect_error_leaves=True)
|
||||||
differ.parse(code1, copies=6, parsers=11)
|
differ.parse(code1, parsers=1)
|
||||||
|
|
||||||
|
|
||||||
|
def test_special_no_newline_ending(differ):
|
||||||
|
code1 = dedent('''\
|
||||||
|
1
|
||||||
|
''')
|
||||||
|
code2 = dedent('''\
|
||||||
|
1
|
||||||
|
is ''')
|
||||||
|
differ.initialize(code1)
|
||||||
|
differ.parse(code2, copies=1, parsers=1, expect_error_leaves=True)
|
||||||
|
differ.parse(code1, copies=1, parsers=0)
|
||||||
|
|||||||
Reference in New Issue
Block a user