1
0
forked from VimPlug/jedi

Fix some tests.

This commit is contained in:
Dave Halter
2017-01-20 18:12:09 +01:00
parent ebfae050a8
commit 73b2287fb4

View File

@@ -123,7 +123,6 @@ class DiffParser(object):
self._copy_count = 0
self._parser_count = 0
self._parsed_until_line = 0
self._copied_ranges = []
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):
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
line_stmt = self._get_old_line_stmt(parsed_until_line_old + 1)
if line_stmt is None:
@@ -312,7 +311,13 @@ class DiffParser(object):
node = self._try_parse_part(until_line)
nodes = self._get_children_nodes(node)
#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(
self._new_used_names,
node.used_names
@@ -415,7 +420,7 @@ class DiffParser(object):
class _NodesStackNode(object):
def __init__(self, tree_node, parent):
def __init__(self, tree_node, parent=None):
self.tree_node = tree_node
self._children_groups = []
self.parent = parent
@@ -443,7 +448,7 @@ class _NodesStack(object):
def __init__(self, module):
# Top of stack
self._tos = self._base_node = _NodesStackNode(module, None)
self._tos = self._base_node = _NodesStackNode(module)
self._module = module
self.prefix = ''
self.parsed_until_line = 0
@@ -474,21 +479,19 @@ class _NodesStack(object):
node.close()
node = node.parent
def add_nodes(self, tree_nodes):
def add_parsed_nodes(self, tree_nodes):
tree_nodes = self._cleanup_nodes(tree_nodes)
if not tree_nodes:
return
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])
assert node.tree_node.type in ('suite', 'file_input')
node.add(tree_nodes)
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:
@@ -520,6 +523,9 @@ class _NodesStack(object):
self.parsed_until_line = last_leaf.start_pos[0]
else:
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)
first_leaf = tree_nodes[0].first_leaf()
@@ -542,12 +548,13 @@ class _NodesStack(object):
"""
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:
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
def _xyz(self, tos, tree_nodes, until_line, line_offset):
def _xyz(self, tos, tree_nodes, until_line, line_offset=0):
new_nodes = []
new_tos = tos
for tree_node in tree_nodes:
@@ -563,13 +570,15 @@ class _NodesStack(object):
break
# Don't need to pass until_line here, it's already done by the
# 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:
# A suite only with newline is not valid.
break
new_tos = suite_tos
suite_tos.parent = new_tos
new_tos = recursive_tos
else:
new_nodes.append(tree_node)
@@ -592,7 +601,7 @@ class _NodesStack(object):
if not new_nodes:
return [], tos
tos.add(new_nodes)
tos.add(new_nodes, line_offset)
return new_nodes, new_tos
def _copy_divided_nodes(self, nodes):
@@ -619,13 +628,9 @@ class _NodesStack(object):
if tree_node.type in ('suite', 'file_input'):
self._tos = _NodesStackNode(tree_node, self._tos)
self._tos.add(list(tree_node.children))
try:
last_child = tree_node.children[-1]
except AttributeError:
pass
else:
self._update_tos(last_child)
self._update_tos(tree_node.children[-1])
elif tree_node.type in ('classdef', 'funcdef'):
self._update_tos(tree_node.children[-1])
def close(self):
node = self._tos