forked from VimPlug/jedi
Also implement the or operator.
This commit is contained in:
@@ -223,12 +223,18 @@ def process_precedence_element(evaluator, precedence):
|
|||||||
operator = precedence.operator
|
operator = precedence.operator
|
||||||
lazy_right = lambda: process_precedence_element(evaluator, precedence.right)
|
lazy_right = lambda: process_precedence_element(evaluator, precedence.right)
|
||||||
# handle lazy evaluation of and/or here.
|
# handle lazy evaluation of and/or here.
|
||||||
if operator == 'and':
|
if operator in ('and', 'or'):
|
||||||
left_bools = set([left.py__bool__() for left in left_objs])
|
left_bools = set([left.py__bool__() for left in left_objs])
|
||||||
if left_bools == set([True]):
|
if left_bools == set([True]):
|
||||||
return left_objs
|
if operator == 'and':
|
||||||
|
return lazy_right()
|
||||||
|
else:
|
||||||
|
return left_objs
|
||||||
elif left_bools == set([False]):
|
elif left_bools == set([False]):
|
||||||
return lazy_right()
|
if operator == 'and':
|
||||||
|
return left_objs
|
||||||
|
else:
|
||||||
|
return lazy_right()
|
||||||
# Otherwise continue, because of uncertainty.
|
# Otherwise continue, because of uncertainty.
|
||||||
return calculate(evaluator, left_objs, precedence.operator,
|
return calculate(evaluator, left_objs, precedence.operator,
|
||||||
lazy_right())
|
lazy_right())
|
||||||
|
|||||||
Reference in New Issue
Block a user