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/test/test_evaluate/test_precedence.py b/test/test_evaluate/test_precedence.py new file mode 100644 index 00000000..462b7d4a --- /dev/null +++ b/test/test_evaluate/test_precedence.py @@ -0,0 +1,20 @@ +from jedi.parser import load_grammar, Parser +from jedi.evaluate import Evaluator +from jedi.evaluate.compiled import CompiledObject + +import pytest + + +@pytest.mark.skipif('sys.version_info[0] < 3') # Ellipsis does not exists in 2 +@pytest.mark.parametrize('source', [ + '1 == 1', + '1.0 == 1', + '... == ...' +]) +def test_equals(source): + evaluator = Evaluator(load_grammar()) + node = Parser(load_grammar(), source, 'eval_input').get_parsed_node() + results = evaluator.eval_element(node) + assert len(results) == 1 + first = results.pop() + assert isinstance(first, CompiledObject) and first.obj is True