mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-07 21:34:32 +08:00
Fix diff parser: Need to calculate the prefix for the diff tokenizer better
This commit is contained in:
@@ -388,6 +388,10 @@ 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:
|
||||||
|
assert start_pos[1] >= len(prefix), repr(prefix)
|
||||||
|
if start_pos[1] - len(prefix) == 0:
|
||||||
|
prefix = ''
|
||||||
yield PythonToken(
|
yield PythonToken(
|
||||||
PythonTokenTypes.ENDMARKER, '',
|
PythonTokenTypes.ENDMARKER, '',
|
||||||
(start_pos[0] + line_offset, 0),
|
(start_pos[0] + line_offset, 0),
|
||||||
|
|||||||
@@ -1012,3 +1012,25 @@ def test_special_no_newline_ending(differ):
|
|||||||
differ.initialize(code1)
|
differ.initialize(code1)
|
||||||
differ.parse(code2, copies=1, parsers=1, expect_error_leaves=True)
|
differ.parse(code2, copies=1, parsers=1, expect_error_leaves=True)
|
||||||
differ.parse(code1, copies=1, parsers=0)
|
differ.parse(code1, copies=1, parsers=0)
|
||||||
|
|
||||||
|
|
||||||
|
def test_random_character_insertion(differ):
|
||||||
|
code1 = dedent('''\
|
||||||
|
def create(self):
|
||||||
|
1
|
||||||
|
if self.path is not None:
|
||||||
|
return
|
||||||
|
# 3
|
||||||
|
# 4
|
||||||
|
''')
|
||||||
|
code2 = dedent('''\
|
||||||
|
def create(self):
|
||||||
|
1
|
||||||
|
if 2:
|
||||||
|
x return
|
||||||
|
# 3
|
||||||
|
# 4
|
||||||
|
''')
|
||||||
|
differ.initialize(code1)
|
||||||
|
differ.parse(code2, copies=1, parsers=3, expect_error_leaves=True)
|
||||||
|
differ.parse(code1, copies=1, parsers=1)
|
||||||
|
|||||||
Reference in New Issue
Block a user