diff --git a/jedi/parser/diff.py b/jedi/parser/diff.py index db665fe5..cdc88e2f 100644 --- a/jedi/parser/diff.py +++ b/jedi/parser/diff.py @@ -155,9 +155,15 @@ class DiffParser(object): line_length = len(lines_new) lines_old = splitlines(self._parser.source, keepends=True) sm = difflib.SequenceMatcher(None, lines_old, self._parser_lines_new) + opcodes = sm.get_opcodes() debug.speed('diff parser calculated') debug.dbg('diff: line_lengths old: %s, new: %s' % (len(lines_old), line_length)) - for operation, i1, i2, j1, j2 in sm.get_opcodes(): + + if len(opcodes) == 1 and opcodes[0][0] == 'equal': + self._copy_count = 1 + return self._module + + for operation, i1, i2, j1, j2 in opcodes: debug.dbg('diff %s old[%s:%s] new[%s:%s]', operation, i1 + 1, i2, j1 + 1, j2) diff --git a/test/test_parser/test_diff_parser.py b/test/test_parser/test_diff_parser.py index 0a60df86..69d3a1bd 100644 --- a/test/test_parser/test_diff_parser.py +++ b/test/test_parser/test_diff_parser.py @@ -420,7 +420,7 @@ def test_whitespace_at_end(differ): code = dedent('str\n\n') differ.initialize(code) - differ.parse(code, parsers=1, copies=1) + differ.parse(code + '\n', parsers=1, copies=1) def test_in_class_movements(differ):