1
0
forked from VimPlug/jedi

Fix the final issues with the ContextSet refactoring.

This commit is contained in:
Dave Halter
2017-09-26 18:17:19 +02:00
parent ee52cc7501
commit 00f2f9a90c
2 changed files with 9 additions and 9 deletions

View File

@@ -355,7 +355,7 @@ class Evaluator(object):
context_set = self.eval_atom(context, element.children[0]) context_set = self.eval_atom(context, element.children[0])
for next_name in element.children[2::2]: for next_name in element.children[2::2]:
# TODO add search_global=True? # TODO add search_global=True?
context_set.py__getattribute__(next_name, name_context=context) context_set = context_set.py__getattribute__(next_name, name_context=context)
return context_set return context_set
elif typ == 'eval_input': elif typ == 'eval_input':
return self._eval_element_not_cached(context, element.children[0]) return self._eval_element_not_cached(context, element.children[0])

View File

@@ -50,7 +50,7 @@ def calculate_children(evaluator, context, children):
# handle lazy evaluation of and/or here. # handle lazy evaluation of and/or here.
if operator in ('and', 'or'): if operator in ('and', 'or'):
left_bools = ContextSet(left.py__bool__() for left in types) left_bools = set(left.py__bool__() for left in types)
if left_bools == set([True]): if left_bools == set([True]):
if operator == 'and': if operator == 'and':
types = context.eval_node(right) types = context.eval_node(right)
@@ -65,22 +65,22 @@ def calculate_children(evaluator, context, children):
return types return types
def calculate(evaluator, context, left_result, operator, right_result): def calculate(evaluator, context, left_contexts, operator, right_contexts):
if not left_result or not right_result: if not left_contexts or not right_contexts:
# illegal slices e.g. cause left/right_result to be None # illegal slices e.g. cause left/right_result to be None
result = (left_result or NO_CONTEXTS) | (right_result or NO_CONTEXTS) result = (left_contexts or NO_CONTEXTS) | (right_contexts or NO_CONTEXTS)
return literals_to_types(evaluator, result) return literals_to_types(evaluator, result)
else: else:
# I don't think there's a reasonable chance that a string # I don't think there's a reasonable chance that a string
# operation is still correct, once we pass something like six # operation is still correct, once we pass something like six
# objects. # objects.
if len(left_result) * len(right_result) > 6: if len(left_contexts) * len(right_contexts) > 6:
return literals_to_types(evaluator, left_result | right_result) return literals_to_types(evaluator, left_contexts | right_contexts)
else: else:
return ContextSet.from_sets( return ContextSet.from_sets(
_element_calculate(evaluator, context, left, operator, right) _element_calculate(evaluator, context, left, operator, right)
for left in left_result for left in left_contexts
for right in right_result for right in right_contexts
) )