mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-07 21:34:32 +08:00
Diff parser: All indent checks should use _get_indent
This commit is contained in:
@@ -44,7 +44,11 @@ def _get_next_leaf_if_indentation(leaf):
|
|||||||
|
|
||||||
|
|
||||||
def _get_suite_indentation(tree_node):
|
def _get_suite_indentation(tree_node):
|
||||||
return tree_node.children[1].start_pos[1]
|
return _get_indentation(tree_node.children[1])
|
||||||
|
|
||||||
|
|
||||||
|
def _get_indentation(tree_node):
|
||||||
|
return tree_node.start_pos[1]
|
||||||
|
|
||||||
|
|
||||||
def _assert_valid_graph(node):
|
def _assert_valid_graph(node):
|
||||||
@@ -106,7 +110,7 @@ def _assert_nodes_are_equal(node1, node2):
|
|||||||
assert False, (node1, node2)
|
assert False, (node1, node2)
|
||||||
for n1, n2 in zip(children1, children2):
|
for n1, n2 in zip(children1, children2):
|
||||||
_assert_nodes_are_equal(n1, n2)
|
_assert_nodes_are_equal(n1, n2)
|
||||||
assert len(children1) == len(children2)
|
assert len(children1) == len(children2), repr(children1) + '\n' + repr(children2)
|
||||||
|
|
||||||
|
|
||||||
def _get_debug_error_message(module, old_lines, new_lines):
|
def _get_debug_error_message(module, old_lines, new_lines):
|
||||||
@@ -474,7 +478,8 @@ class _NodesTreeNode(object):
|
|||||||
if self.tree_node.type == 'file_input':
|
if self.tree_node.type == 'file_input':
|
||||||
self.indentation = 0
|
self.indentation = 0
|
||||||
else:
|
else:
|
||||||
self.indentation = _get_suite_func_or_class_parent(self.tree_node).start_pos[1]
|
n = _get_suite_func_or_class_parent(self.tree_node)
|
||||||
|
self.indentation = _get_indentation(n)
|
||||||
|
|
||||||
def finish(self):
|
def finish(self):
|
||||||
children = []
|
children = []
|
||||||
@@ -539,14 +544,6 @@ class _NodesTreeNode(object):
|
|||||||
return max(line, self._node_children[-1].get_last_line(suffix))
|
return max(line, self._node_children[-1].get_last_line(suffix))
|
||||||
return line
|
return line
|
||||||
|
|
||||||
def get_latest_indentation(self):
|
|
||||||
if not self._children_groups:
|
|
||||||
return 0
|
|
||||||
first = self._children_groups[-1].children[0]
|
|
||||||
if first.type == 'newline':
|
|
||||||
first = self._children_groups[-1].children[1]
|
|
||||||
return first.start_pos[1]
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<%s: %s>' % (self.__class__.__name__, self.tree_node)
|
return '<%s: %s>' % (self.__class__.__name__, self.tree_node)
|
||||||
|
|
||||||
@@ -560,13 +557,6 @@ class _NodesTree(object):
|
|||||||
self.prefix = ''
|
self.prefix = ''
|
||||||
self.indents = [0]
|
self.indents = [0]
|
||||||
|
|
||||||
def get_indents(self, indentation):
|
|
||||||
for node in self._working_stack:
|
|
||||||
for i in node.indents:
|
|
||||||
yield i
|
|
||||||
if indentation <= i:
|
|
||||||
break
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def parsed_until_line(self):
|
def parsed_until_line(self):
|
||||||
return self._working_stack[-1].get_last_line(self.prefix)
|
return self._working_stack[-1].get_last_line(self.prefix)
|
||||||
@@ -643,7 +633,7 @@ class _NodesTree(object):
|
|||||||
# Invalid indents are ok, because the parser handled that
|
# Invalid indents are ok, because the parser handled that
|
||||||
# properly before. An invalid dedent can happen, because a few
|
# properly before. An invalid dedent can happen, because a few
|
||||||
# lines above there was an invalid indent.
|
# lines above there was an invalid indent.
|
||||||
indentation = tree_nodes[0].start_pos[1]
|
indentation = _get_indentation(tree_nodes[0])
|
||||||
for i, c in enumerate(tree_nodes):
|
for i, c in enumerate(tree_nodes):
|
||||||
if c.start_pos[1] < indentation:
|
if c.start_pos[1] < indentation:
|
||||||
tree_nodes = tree_nodes[:i]
|
tree_nodes = tree_nodes[:i]
|
||||||
|
|||||||
Reference in New Issue
Block a user