From 70e3719fb95cb7c7316960691e49b39476873f33 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 12 Sep 2016 02:26:45 +0200 Subject: [PATCH] Small bug fixes. --- jedi/parser/fast.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/jedi/parser/fast.py b/jedi/parser/fast.py index 670185e4..4b8a91d0 100644 --- a/jedi/parser/fast.py +++ b/jedi/parser/fast.py @@ -185,7 +185,7 @@ class DiffParser(object): print('test', last_line, until_line_old, node) if last_line > until_line_old: - divided_node = self._divide_node(node, until_line_new) + divided_node = self._divide_node(node, until_line_old) print('divided', divided_node) if divided_node is not None: nodes.append(divided_node) @@ -199,7 +199,7 @@ class DiffParser(object): nodes.pop() if nodes: - print('COPY', until_line_new) + print('COPY', until_line_new, nodes) self._copy_count += 1 parent = self._insert_nodes(nodes) self._update_names_dict(parent, nodes) @@ -211,6 +211,21 @@ class DiffParser(object): # that is not finished. break + def _get_old_line_stmt(self, old_line): + leaf = self._old_module.get_leaf_for_position((old_line, 0), include_prefixes=True) + + if leaf.type == 'newline': + leaf = leaf.get_next_leaf() + if leaf.get_start_pos_of_prefix()[0] == old_line: + node = leaf + # TODO use leaf.get_definition one day when that one is working + # well. + while node.parent.type not in ('file_input', 'suite'): + node = node.parent + return node + # Must be on the same line. Otherwise we need to parse that bit. + return None + def _update_positions(self, nodes, line_offset): for node in nodes: try: @@ -365,7 +380,7 @@ class DiffParser(object): child.parent = new_node for i, child in enumerate(new_suite.children): child.parent = new_suite - if child.end_pos[1] > until_line: + if child.end_pos[0] > until_line: divided_node = self._divide_node(child, until_line) new_suite.children = new_suite.children[:i] if divided_node is not None: @@ -377,20 +392,6 @@ class DiffParser(object): break return new_node - def _get_old_line_stmt(self, old_line): - leaf = self._old_module.get_leaf_for_position((old_line, 0), include_prefixes=True) - if leaf.type == 'newline': - leaf = leaf.get_next_leaf() - if leaf.get_start_pos_of_prefix()[0] == old_line: - node = leaf - # TODO use leaf.get_definition one day when that one is working - # well. - while node.parent.type not in ('file_input', 'suite'): - node = node.parent - return node - # Must be on the same line. Otherwise we need to parse that bit. - return None - def _parse(self, until_line): """ Parses at least until the given line, but might just parse more until a