Fix some stuff that caused issues in Jedi.

This commit is contained in:
Dave Halter
2017-06-02 00:15:37 +02:00
parent b1b165c21e
commit be54401388
3 changed files with 18 additions and 2 deletions

View File

@@ -139,7 +139,8 @@ class Parser(BaseParser):
else:
last_leaf = None
if typ == ENDMARKER or typ == DEDENT and '\n' not in last_leaf.value:
if self._start_symbol == 'file_input' and \
(typ == ENDMARKER or typ == DEDENT and '\n' not in last_leaf.value):
def reduce_stack(states, newstate):
# reduce
state = newstate

View File

@@ -73,7 +73,7 @@ class PythonMixin(object):
scope = self
while scope.parent is not None:
parent = scope.parent
if isinstance(scope, (PythonNode, PythonLeaf)) and parent.type != 'simple_stmt':
if isinstance(scope, (PythonNode, PythonLeaf)) and parent.type not in ('simple_stmt', 'file_input'):
if scope.type == 'testlist_comp':
try:
if scope.children[1].type == 'comp_for':

View File

@@ -184,3 +184,18 @@ def test_dedent_at_end():
suite = module.children[0].children[-1]
foobar = suite.children[-1]
assert foobar.type == 'name'
def test_no_error_nodes():
def check(node):
assert node.type not in ('error_leaf', 'error_node')
try:
children = node.children
except AttributeError:
pass
else:
for child in children:
check(child)
check(parse("if foo:\n bar"))