diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 3feb4491..a231c39f 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -174,6 +174,8 @@ class Evaluator(object): def _eval_precedence(self, _precedence): left = self.process_precedence_element(_precedence.left) right = self.process_precedence_element(_precedence.right) + if _precedence.operator == ':': + return [] return precedence.calculate(self, left, _precedence.operator, right) def _eval_statement_element(self, element): diff --git a/jedi/evaluate/dynamic.py b/jedi/evaluate/dynamic.py index 43deb068..74c59563 100644 --- a/jedi/evaluate/dynamic.py +++ b/jedi/evaluate/dynamic.py @@ -27,7 +27,6 @@ from jedi.evaluate import imports # This is something like the sys.path, but only for searching params. It means # that this is the order in which Jedi searches params. search_param_modules = ['.'] -import sys class ParamListener(object): diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 0861e953..f180205e 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -475,4 +475,4 @@ def create_indexes_or_slices(evaluator, index_array): step = None return [Slice(evaluator, start, stop, step)] else: - return evaluator.process_precedence_element(prec) or [] + return evaluator.process_precedence_element(prec) diff --git a/jedi/evaluate/precedence.py b/jedi/evaluate/precedence.py index 7efb69ba..e28d891a 100644 --- a/jedi/evaluate/precedence.py +++ b/jedi/evaluate/precedence.py @@ -183,7 +183,8 @@ def calculate(evaluator, left_result, operator, right_result): return result else: if not left_result or not right_result: - return left_result + right_result + # illegal slices e.g. cause left/right_result to be None + return (left_result or []) + (right_result or []) for left in left_result: for right in right_result: diff --git a/test/completion/precedence.py b/test/completion/precedence.py index fc42937c..fb80b899 100644 --- a/test/completion/precedence.py +++ b/test/completion/precedence.py @@ -98,3 +98,13 @@ for x in [l(0), l(1), l(2), l(3), l(4), l(5), l(6), l(7), l(8), l(9), l(10), #? str() b[1] + + +# ----------------- +# syntax errors +# ----------------- + +# strange slice +z = sorted([1], key = lambda x : x): +#? int() +z