diff --git a/parso/python/tree.py b/parso/python/tree.py index 11ebb2e..c169caf 100644 --- a/parso/python/tree.py +++ b/parso/python/tree.py @@ -108,7 +108,7 @@ class PythonLeaf(PythonMixin, Leaf): # indent error leafs somehow? No idea how, though. previous_leaf = self.get_previous_leaf() if previous_leaf is not None and previous_leaf.type == 'error_leaf' \ - and previous_leaf.original_type == 'error_dedent': + and previous_leaf.original_type in ('indent', 'error_dedent'): previous_leaf = previous_leaf.get_previous_leaf() if previous_leaf is None: diff --git a/test/test_parser_tree.py b/test/test_parser_tree.py index c0f3d96..dcf3397 100644 --- a/test/test_parser_tree.py +++ b/test/test_parser_tree.py @@ -121,13 +121,21 @@ def get_yield_exprs(code, version): return list(parse(code, version=version).children[0].iter_yield_exprs()) +def get_return_stmts(code): + return list(parse(code).children[0].iter_return_stmts()) + + def test_yields(each_version): y, = get_yield_exprs('def x(): yield', each_version) assert y.value == 'yield' + assert y.type == 'keyword' y, = get_yield_exprs('def x(): (yield 1)', each_version) assert y.type == 'yield_expr' + y, = get_yield_exprs('def x(): [1, (yield)]', each_version) + assert y.type == 'keyword' + def test_yield_from(): y, = get_yield_exprs('def x(): (yield from 1)', '3.3')