forked from VimPlug/jedi
Fix some tests.
This commit is contained in:
@@ -123,7 +123,6 @@ class DiffParser(object):
|
|||||||
self._copy_count = 0
|
self._copy_count = 0
|
||||||
self._parser_count = 0
|
self._parser_count = 0
|
||||||
|
|
||||||
self._parsed_until_line = 0
|
|
||||||
self._copied_ranges = []
|
self._copied_ranges = []
|
||||||
|
|
||||||
self._old_children = self._old_module.children
|
self._old_children = self._old_module.children
|
||||||
@@ -201,7 +200,7 @@ class DiffParser(object):
|
|||||||
def _copy_from_old_parser(self, line_offset, until_line_old, until_line_new):
|
def _copy_from_old_parser(self, line_offset, until_line_old, until_line_new):
|
||||||
copied_nodes = [None]
|
copied_nodes = [None]
|
||||||
|
|
||||||
while until_line_new > self._parsed_until_line:
|
while until_line_new > self._nodes_stack.parsed_until_line:
|
||||||
parsed_until_line_old = self._nodes_stack.parsed_until_line - line_offset
|
parsed_until_line_old = self._nodes_stack.parsed_until_line - line_offset
|
||||||
line_stmt = self._get_old_line_stmt(parsed_until_line_old + 1)
|
line_stmt = self._get_old_line_stmt(parsed_until_line_old + 1)
|
||||||
if line_stmt is None:
|
if line_stmt is None:
|
||||||
@@ -312,7 +311,13 @@ class DiffParser(object):
|
|||||||
node = self._try_parse_part(until_line)
|
node = self._try_parse_part(until_line)
|
||||||
nodes = self._get_children_nodes(node)
|
nodes = self._get_children_nodes(node)
|
||||||
#self._insert_nodes(nodes)
|
#self._insert_nodes(nodes)
|
||||||
self._nodes_stack.add_nodes(nodes)
|
|
||||||
|
debug.dbg(
|
||||||
|
'parse part %s to %s',
|
||||||
|
self._nodes_stack.parsed_until_line,
|
||||||
|
node.end_pos[0] - 1
|
||||||
|
)
|
||||||
|
self._nodes_stack.add_parsed_nodes(nodes)
|
||||||
_merge_used_names(
|
_merge_used_names(
|
||||||
self._new_used_names,
|
self._new_used_names,
|
||||||
node.used_names
|
node.used_names
|
||||||
@@ -415,7 +420,7 @@ class DiffParser(object):
|
|||||||
|
|
||||||
|
|
||||||
class _NodesStackNode(object):
|
class _NodesStackNode(object):
|
||||||
def __init__(self, tree_node, parent):
|
def __init__(self, tree_node, parent=None):
|
||||||
self.tree_node = tree_node
|
self.tree_node = tree_node
|
||||||
self._children_groups = []
|
self._children_groups = []
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
@@ -443,7 +448,7 @@ class _NodesStack(object):
|
|||||||
|
|
||||||
def __init__(self, module):
|
def __init__(self, module):
|
||||||
# Top of stack
|
# Top of stack
|
||||||
self._tos = self._base_node = _NodesStackNode(module, None)
|
self._tos = self._base_node = _NodesStackNode(module)
|
||||||
self._module = module
|
self._module = module
|
||||||
self.prefix = ''
|
self.prefix = ''
|
||||||
self.parsed_until_line = 0
|
self.parsed_until_line = 0
|
||||||
@@ -474,21 +479,19 @@ class _NodesStack(object):
|
|||||||
node.close()
|
node.close()
|
||||||
node = node.parent
|
node = node.parent
|
||||||
|
|
||||||
def add_nodes(self, tree_nodes):
|
def add_parsed_nodes(self, tree_nodes):
|
||||||
tree_nodes = self._cleanup_nodes(tree_nodes)
|
tree_nodes = self._cleanup_nodes(tree_nodes)
|
||||||
if not tree_nodes:
|
if not tree_nodes:
|
||||||
return
|
return
|
||||||
|
|
||||||
assert tree_nodes[0].type != 'newline'
|
assert tree_nodes[0].type != 'newline'
|
||||||
last_node = self._tos.tree_node
|
|
||||||
assert last_node.end_pos[0] <= self.parsed_until_line
|
|
||||||
|
|
||||||
node = self._get_insertion_node(tree_nodes[0])
|
node = self._get_insertion_node(tree_nodes[0])
|
||||||
assert node.tree_node.type in ('suite', 'file_input')
|
assert node.tree_node.type in ('suite', 'file_input')
|
||||||
node.add(tree_nodes)
|
node.add(tree_nodes)
|
||||||
self._update_tos(tree_nodes[-1])
|
self._update_tos(tree_nodes[-1])
|
||||||
|
|
||||||
def _cleanup_nodes(self, tree_nodes):
|
def _cleanup_nodes(self, tree_nodes, line_offset=0):
|
||||||
"""
|
"""
|
||||||
Helps cleaning up the tree nodes that get inserted:
|
Helps cleaning up the tree nodes that get inserted:
|
||||||
|
|
||||||
@@ -520,6 +523,9 @@ class _NodesStack(object):
|
|||||||
self.parsed_until_line = last_leaf.start_pos[0]
|
self.parsed_until_line = last_leaf.start_pos[0]
|
||||||
else:
|
else:
|
||||||
self.parsed_until_line = last_leaf.end_pos[0]
|
self.parsed_until_line = last_leaf.end_pos[0]
|
||||||
|
self.parsed_until_line += line_offset
|
||||||
|
print([t.get_code() for t in tree_nodes], is_endmarker,
|
||||||
|
repr(last_leaf.prefix))
|
||||||
debug.dbg('set parsed_until %s', self.parsed_until_line)
|
debug.dbg('set parsed_until %s', self.parsed_until_line)
|
||||||
|
|
||||||
first_leaf = tree_nodes[0].first_leaf()
|
first_leaf = tree_nodes[0].first_leaf()
|
||||||
@@ -542,12 +548,13 @@ class _NodesStack(object):
|
|||||||
"""
|
"""
|
||||||
tos = self._get_insertion_node(tree_nodes[0])
|
tos = self._get_insertion_node(tree_nodes[0])
|
||||||
|
|
||||||
new_nodes, self._tos = self._xyz(tos, tos.tree_node.children, until_line, line_offset)
|
new_nodes, self._tos = self._xyz(tos, tree_nodes, until_line, line_offset)
|
||||||
if new_nodes:
|
if new_nodes:
|
||||||
self._tos.update_last_children_group(self._cleanup_nodes(new_nodes))
|
new_nodes = self._cleanup_nodes(new_nodes, line_offset)
|
||||||
|
self._tos.update_last_children_group(new_nodes)
|
||||||
return new_nodes
|
return new_nodes
|
||||||
|
|
||||||
def _xyz(self, tos, tree_nodes, until_line, line_offset):
|
def _xyz(self, tos, tree_nodes, until_line, line_offset=0):
|
||||||
new_nodes = []
|
new_nodes = []
|
||||||
new_tos = tos
|
new_tos = tos
|
||||||
for tree_node in tree_nodes:
|
for tree_node in tree_nodes:
|
||||||
@@ -563,13 +570,15 @@ class _NodesStack(object):
|
|||||||
break
|
break
|
||||||
# Don't need to pass until_line here, it's already done by the
|
# Don't need to pass until_line here, it's already done by the
|
||||||
# parent.
|
# parent.
|
||||||
suite_nodes, suite_tos = self._xyz(tos, suite.children, until_line)
|
suite_tos = _NodesStackNode(suite)
|
||||||
|
suite_nodes, recursive_tos = self._xyz(suite_tos, suite.children, until_line)
|
||||||
|
|
||||||
if len(suite_nodes) < 2:
|
if len(suite_nodes) < 2:
|
||||||
# A suite only with newline is not valid.
|
# A suite only with newline is not valid.
|
||||||
break
|
break
|
||||||
|
|
||||||
new_tos = suite_tos
|
suite_tos.parent = new_tos
|
||||||
|
new_tos = recursive_tos
|
||||||
else:
|
else:
|
||||||
new_nodes.append(tree_node)
|
new_nodes.append(tree_node)
|
||||||
|
|
||||||
@@ -592,7 +601,7 @@ class _NodesStack(object):
|
|||||||
if not new_nodes:
|
if not new_nodes:
|
||||||
return [], tos
|
return [], tos
|
||||||
|
|
||||||
tos.add(new_nodes)
|
tos.add(new_nodes, line_offset)
|
||||||
return new_nodes, new_tos
|
return new_nodes, new_tos
|
||||||
|
|
||||||
def _copy_divided_nodes(self, nodes):
|
def _copy_divided_nodes(self, nodes):
|
||||||
@@ -619,13 +628,9 @@ class _NodesStack(object):
|
|||||||
if tree_node.type in ('suite', 'file_input'):
|
if tree_node.type in ('suite', 'file_input'):
|
||||||
self._tos = _NodesStackNode(tree_node, self._tos)
|
self._tos = _NodesStackNode(tree_node, self._tos)
|
||||||
self._tos.add(list(tree_node.children))
|
self._tos.add(list(tree_node.children))
|
||||||
|
self._update_tos(tree_node.children[-1])
|
||||||
try:
|
elif tree_node.type in ('classdef', 'funcdef'):
|
||||||
last_child = tree_node.children[-1]
|
self._update_tos(tree_node.children[-1])
|
||||||
except AttributeError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
self._update_tos(last_child)
|
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
node = self._tos
|
node = self._tos
|
||||||
|
|||||||
Reference in New Issue
Block a user