diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index 81307405..2580a94b 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -1023,7 +1023,11 @@ isinstance(c, (tokenize.Token, Operator)) else unicode(c) # always dictionaries and not sets. arr.type = Array.DICT - arr.end_pos = (break_tok or stmt or old_stmt).end_pos + try: + arr.end_pos = (break_tok or stmt or old_stmt).end_pos + except UnboundLocalError: + # In case of something like `(def` + arr.end_pos = start_pos[0], start_pos[1] + 1 return arr, break_tok def parse_stmt(token_iterator, maybe_dict=False, added_breaks=(), diff --git a/test/completion/parser.py b/test/completion/parser.py index d0e7e810..2f6fbb3f 100644 --- a/test/completion/parser.py +++ b/test/completion/parser.py @@ -25,3 +25,12 @@ IndentIssues().one_param() #? str() IndentIssues().with_param('') + + +""" +Just because there's a def keyword, doesn't mean it should not be able to +complete to definition. +""" +definition = 0 +#? ['definition', 'def'] +str(def