diff --git a/jedi/evaluate.py b/jedi/evaluate.py index 7c4645c0..b7f3b1db 100644 --- a/jedi/evaluate.py +++ b/jedi/evaluate.py @@ -1055,6 +1055,8 @@ def get_scopes_for_name(scope, name_str, position=None, search_global=False, def handle_for_loops(loop): # Take the first statement (for has always only # one, remember `in`). And follow it. + if not len(loop.inits): + return [] result = get_iterator_types(follow_statement(loop.inits[0])) if len(loop.set_vars) > 1: var_arr = loop.set_stmt.get_assignment_calls() diff --git a/jedi/parsing.py b/jedi/parsing.py index 495c0483..312336a0 100644 --- a/jedi/parsing.py +++ b/jedi/parsing.py @@ -1691,7 +1691,8 @@ class PyFuzzyParser(object): if tok == 'in': statement, tok = self._parse_statement() if tok == ':': - f = ForFlow([statement], first_pos, set_stmt) + s = [] if statement is None else [statement] + f = ForFlow(s, first_pos, set_stmt) self.scope = self.scope.add_statement(f) elif tok in ['if', 'while', 'try', 'with'] + extended_flow: diff --git a/test/completion/invalid.py b/test/completion/invalid.py index 5ce37dd1..a49a56c6 100644 --- a/test/completion/invalid.py +++ b/test/completion/invalid.py @@ -64,6 +64,14 @@ a = 1 if #? int() a +for for_local in : + for_local +#? ['for_local'] +for_local +#? +for_local + + a2 = [for a2 in [0]] #? a2[0]