Instances should use py__getitem__ instead of py__simple_getitem__

This commit is contained in:
Dave Halter
2018-08-25 22:55:08 +02:00
parent 465264e07d
commit 18b6febe86

View File

@@ -8,7 +8,8 @@ from jedi.evaluate.base_context import Context, NO_CONTEXTS, ContextSet, \
iterator_to_context_set iterator_to_context_set
from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts
from jedi.evaluate.cache import evaluator_method_cache from jedi.evaluate.cache import evaluator_method_cache
from jedi.evaluate.arguments import AbstractArguments, AnonymousArguments from jedi.evaluate.arguments import AbstractArguments, AnonymousArguments, \
ValuesArguments
from jedi.evaluate.context.function import FunctionExecutionContext, \ from jedi.evaluate.context.function import FunctionExecutionContext, \
FunctionContext, AbstractFunction FunctionContext, AbstractFunction
from jedi.evaluate.context.klass import ClassContext, apply_py__get__, ClassFilter from jedi.evaluate.context.klass import ClassContext, apply_py__get__, ClassFilter
@@ -126,15 +127,15 @@ class AbstractInstanceContext(Context):
else: else:
yield InstanceClassFilter(self.evaluator, self, cls, origin_scope) yield InstanceClassFilter(self.evaluator, self, cls, origin_scope)
def py__simple_getitem__(self, index): def py__getitem__(self, index_context_set, contextualized_node):
try: try:
names = self.get_function_slot_names(u'__getitem__') names = self.get_function_slot_names(u'__getitem__')
except KeyError: except KeyError:
debug.warning('No __getitem__, cannot access the array.') debug.warning('No __getitem__, cannot access the array.')
return NO_CONTEXTS return NO_CONTEXTS
else: else:
index_obj = compiled.create_simple_object(self.evaluator, index) args = ValuesArguments([index_context_set])
return self.execute_function_slots(names, index_obj) return ContextSet.from_sets(name.infer().execute(args) for name in names)
def py__iter__(self): def py__iter__(self):
iter_slot_names = self.get_function_slot_names(u'__iter__') iter_slot_names = self.get_function_slot_names(u'__iter__')