forked from VimPlug/jedi
fix a slice issue with precedences.
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user