mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-06 21:04:29 +08:00
Fix some stuff that caused issues in Jedi.
This commit is contained in:
@@ -139,7 +139,8 @@ class Parser(BaseParser):
|
|||||||
else:
|
else:
|
||||||
last_leaf = None
|
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):
|
def reduce_stack(states, newstate):
|
||||||
# reduce
|
# reduce
|
||||||
state = newstate
|
state = newstate
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class PythonMixin(object):
|
|||||||
scope = self
|
scope = self
|
||||||
while scope.parent is not None:
|
while scope.parent is not None:
|
||||||
parent = scope.parent
|
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':
|
if scope.type == 'testlist_comp':
|
||||||
try:
|
try:
|
||||||
if scope.children[1].type == 'comp_for':
|
if scope.children[1].type == 'comp_for':
|
||||||
|
|||||||
@@ -184,3 +184,18 @@ def test_dedent_at_end():
|
|||||||
suite = module.children[0].children[-1]
|
suite = module.children[0].children[-1]
|
||||||
foobar = suite.children[-1]
|
foobar = suite.children[-1]
|
||||||
assert foobar.type == 'name'
|
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"))
|
||||||
|
|||||||
Reference in New Issue
Block a user