From 43ad4cfeb8640b0dee4fd1fa6c17a9ffb2a86264 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 7 Jan 2016 10:41:34 +0100 Subject: [PATCH] Ellipsis comparisons are working now. Ellipsis was previously ignored. --- jedi/evaluate/__init__.py | 3 ++- jedi/parser/tokenize.py | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) 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