From eeac77d360beddbd1969830044977e23d1e51d06 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 12 Aug 2014 18:09:59 +0200 Subject: [PATCH] Also support the not operator. --- jedi/evaluate/precedence.py | 11 +++++++++-- test/completion/flow_analysis.py | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/jedi/evaluate/precedence.py b/jedi/evaluate/precedence.py index 8f453cae..325c186f 100644 --- a/jedi/evaluate/precedence.py +++ b/jedi/evaluate/precedence.py @@ -217,9 +217,11 @@ def _literals_to_types(evaluator, result): def calculate(evaluator, left_result, operator, right_result): result = [] if left_result is None and right_result: - # cases like `-1` or `1 + ~1` + # Cases like `-1`, `1 + ~1` or `not X`. for right in right_result: - result.append(_factor_calculate(evaluator, operator, right)) + obj = _factor_calculate(evaluator, operator, right) + if obj is not None: + result.append(obj) return result else: if not left_result or not right_result: @@ -243,6 +245,11 @@ def _factor_calculate(evaluator, operator, right): if _is_number(right): if operator == '-': return create(evaluator, -right.obj) + if operator == 'not': + value = right.py__bool__() + if value is None: # Uncertainty. + return None + return _keyword_from_value(not value) return right diff --git a/test/completion/flow_analysis.py b/test/completion/flow_analysis.py index 3cff6af0..543c40d1 100644 --- a/test/completion/flow_analysis.py +++ b/test/completion/flow_analysis.py @@ -117,9 +117,9 @@ else: a = dict #? dict a -if (check is not check): +if not (check is not check): a = 1 -#? dict +#? int() a