diff --git a/parso/python/diff.py b/parso/python/diff.py index ac11f31..c88b9c9 100644 --- a/parso/python/diff.py +++ b/parso/python/diff.py @@ -676,9 +676,7 @@ class _NodesTree(object): # line, otherwise it's going to be missing. This happens e.g. # if a bracket is around before that moves newlines to # prefixes. - newline_index = max(p.rfind('\n'), p.rfind('\r')) - if newline_index > -1: - new_prefix = p[:newline_index + 1] + new_prefix = split_lines(p, keepends=True)[0] if had_valid_suite_last: last = new_nodes[-1] diff --git a/test/test_diff_parser.py b/test/test_diff_parser.py index 91ccedd..6f526aa 100644 --- a/test/test_diff_parser.py +++ b/test/test_diff_parser.py @@ -1214,3 +1214,30 @@ def test_open_bracket(differ): differ.parse(code2, copies=1, parsers=1, expect_error_leaves=True) differ.parse(code3, copies=1, parsers=1, expect_error_leaves=True) differ.parse(code1, copies=1, parsers=1) + + +def test_aaaaaaaaaa(differ): + code1 = dedent('''\ + class C: + def f(self): + ( + b + c + + def g(self): + d + ''') + code2 = dedent('''\ + class C: + def f(self): + ( + b + c + self. + + def g(self): + d + ''') + differ.initialize(code1) + differ.parse(code2, copies=1, parsers=2, expect_error_leaves=True) + differ.parse(code1, copies=2, parsers=0, expect_error_leaves=True)