diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index a4f1397e..b69ca241 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -312,7 +312,8 @@ class Evaluator(object): self.eval_element(element.children[-1])) elif element.type == 'operator': # Must be an ellipsis, other operators are not evaluated. - types = set() # Ignore for now. + assert element.value == '...' + types = set([compiled.create(self, Ellipsis)]) elif element.type == 'dotted_name': types = self._eval_atom(element.children[0]) for next_name in element.children[2::2]: diff --git a/jedi/parser/tokenize.py b/jedi/parser/tokenize.py index 194a0967..fe22643f 100644 --- a/jedi/parser/tokenize.py +++ b/jedi/parser/tokenize.py @@ -285,7 +285,13 @@ def generate_tokens(readline): paren_level += 1 elif token in ')]}': paren_level -= 1 - yield OP, token, spos, prefix + if token == '...' and not is_py3: + # Ellipsis tokens were not syntax yet, in Python 2.7. + yield OP, '.', spos, prefix + yield OP, '.', (spos[0], spos[1] + 1), '' + yield OP, '.', (spos[0], spos[1] + 2), '' + else: + yield OP, token, spos, prefix if new_line: end_pos = lnum + 1, 0