From ab5d0ed72b9dd1c8940a6d518cf57d04a8281d75 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sat, 26 Dec 2015 02:47:22 +0100 Subject: [PATCH] Starting with Python 3.4 from is not a token that always is a "new" statement. --- jedi/parser/__init__.py | 7 ++++--- jedi/parser/tokenize.py | 2 +- jedi/parser/tree.py | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/jedi/parser/__init__.py b/jedi/parser/__init__.py index 446f6671..b033592e 100644 --- a/jedi/parser/__init__.py +++ b/jedi/parser/__init__.py @@ -165,7 +165,8 @@ class Parser(object): typ = token.opmap[value] yield typ, value, prefix, start_pos - def error_recovery(self, *args, **kwargs): + def error_recovery(self, grammar, stack, typ, value, start_pos, prefix, + add_token_callback): raise ParseError def convert_node(self, grammar, type, children): @@ -207,7 +208,7 @@ class Parser(object): return new_node def convert_leaf(self, grammar, type, value, prefix, start_pos): - #print('leaf', value, pytree.type_repr(type)) + #print('leaf', repr(value), token.tok_ntype) if type == tokenize.NAME: if value in grammar.keywords: if value in ('def', 'class', 'lambda'): @@ -350,7 +351,7 @@ class ParserWithRecovery(Parser): # Otherwise the parser will get into trouble and DEDENT too early. self._omit_dedent_list.append(self._indent_counter) - if value in ('import', 'from', 'class', 'def', 'try', 'while', 'return'): + if value in ('import', 'class', 'def', 'try', 'while', 'return'): # Those can always be new statements. add_token_callback(typ, value, prefix, start_pos) elif typ == DEDENT and symbol == 'suite': diff --git a/jedi/parser/tokenize.py b/jedi/parser/tokenize.py index ac3cabec..cd62fb29 100644 --- a/jedi/parser/tokenize.py +++ b/jedi/parser/tokenize.py @@ -143,7 +143,7 @@ del _compile tabsize = 8 -ALWAYS_BREAK_TOKENS = (';', 'import', 'from', 'class', 'def', 'try', 'except', +ALWAYS_BREAK_TOKENS = (';', 'import', 'class', 'def', 'try', 'except', 'finally', 'while', 'return') diff --git a/jedi/parser/tree.py b/jedi/parser/tree.py index 5eb1bc5b..c6c46109 100644 --- a/jedi/parser/tree.py +++ b/jedi/parser/tree.py @@ -1319,6 +1319,8 @@ class ReturnStmt(KeywordStatement): class YieldExpr(BaseNode): __slots__ = () + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) def type(self): return 'yield_expr'