1
0
forked from VimPlug/jedi

Support inferring not expr to bool (#2016)

* support inferring some not expr

* format

---------

Co-authored-by: wutingjia <wutingjia@bytedance.com>
This commit is contained in:
WutingjiaX
2024-07-12 20:58:39 +08:00
committed by GitHub
parent 8ee4c26ae4
commit 2859e4f409
2 changed files with 8 additions and 6 deletions

View File

@@ -493,8 +493,10 @@ def infer_factor(value_set, operator):
elif operator == 'not':
b = value.py__bool__()
if b is None: # Uncertainty.
return
yield compiled.create_simple_object(value.inference_state, not b)
yield list(value.inference_state.builtins_module.py__getattribute__('bool')
.execute_annotation()).pop()
else:
yield compiled.create_simple_object(value.inference_state, not b)
else:
yield value
@@ -645,10 +647,7 @@ def _infer_comparison_part(inference_state, context, left, operator, right):
_bool_to_value(inference_state, False)
])
elif str_operator in ('in', 'not in'):
return ValueSet([
_bool_to_value(inference_state, True),
_bool_to_value(inference_state, False)
])
return inference_state.builtins_module.py__getattribute__('bool').execute_annotation()
def check(obj):
"""Checks if a Jedi object is either a float or an int."""

View File

@@ -431,3 +431,6 @@ some_array[some_not_defined_index].upper
#? bool()
res = 'f' in 'foo'; res
#? bool()
res = not {}; res