1
0
forked from VimPlug/jedi

Remove get_index_and_execute and use something else

This commit is contained in:
Dave Halter
2019-12-08 22:55:52 +01:00
parent 9e6c53151b
commit 9eef771ec5
2 changed files with 22 additions and 21 deletions

View File

@@ -3,9 +3,10 @@ This module is about generics, like the `int` in `List[int]`. It's not about
the Generic class.
"""
from jedi import debug
from jedi.cache import memoize_method
from jedi.inference.utils import to_tuple
from jedi.inference.base_value import ValueSet
from jedi.inference.base_value import ValueSet, NO_VALUES
from jedi.inference.value.iterable import SequenceLiteralValue
from jedi.inference.helpers import is_string
@@ -22,7 +23,16 @@ def _resolve_forward_references(context, value_set):
yield value
class LazyGenericManager(object):
class _AbstractGenericManager(object):
def get_index_and_execute(self, index):
try:
return self[index].execute_annotation()
except IndexError:
debug.warning('No param #%s found for annotation %s', index, self)
return NO_VALUES
class LazyGenericManager(_AbstractGenericManager):
def __init__(self, context_of_index, index_value):
self._context_of_index = context_of_index
self._index_value = index_value
@@ -65,7 +75,7 @@ class LazyGenericManager(object):
return False
class TupleGenericManager(object):
class TupleGenericManager(_AbstractGenericManager):
def __init__(self, tup):
self._tuple = tup

View File

@@ -219,22 +219,13 @@ class TypeAlias(LazyValueWrapper):
return cls
class _GetItemMixin(object):
def _get_getitem_values(self, index):
try:
return self._generics_manager[index]
except IndexError:
debug.warning('No param #%s found for annotation %s', index, self._generics_manager)
return NO_VALUES
class Callable(_WithIndexBase, _GetItemMixin):
class Callable(_WithIndexBase):
def py__call__(self, arguments):
# The 0th index are the arguments.
return self._get_getitem_values(1).execute_annotation()
return self._generics_manager.get_index_and_execute(1)
class Tuple(LazyValueWrapper, _GetItemMixin):
class Tuple(LazyValueWrapper):
def __init__(self, inference_state, parent_context, name, generics_manager):
self.inference_state = inference_state
self.parent_context = parent_context
@@ -247,24 +238,24 @@ class Tuple(LazyValueWrapper, _GetItemMixin):
def py__simple_getitem__(self, index):
if self._is_homogenous():
return self._get_getitem_values(0).execute_annotation()
return self._generics_manager.get_index_and_execute(0)
else:
if isinstance(index, int):
return self._get_getitem_values(index).execute_annotation()
return self._generics_manager.get_index_and_execute(index)
debug.dbg('The getitem type on Tuple was %s' % index)
return NO_VALUES
def py__iter__(self, contextualized_node=None):
if self._is_homogenous():
yield LazyKnownValues(self._get_getitem_values(0).execute_annotation())
yield LazyKnownValues(self._generics_manager.get_index_and_execute(0))
else:
for v in self._generics_manager.to_tuple():
yield LazyKnownValues(v.execute_annotation())
def py__getitem__(self, index_value_set, contextualized_node):
if self._is_homogenous():
return self._get_getitem_values(0).execute_annotation()
return self._generics_manager.get_index_and_execute(0)
return ValueSet.from_sets(
self._generics_manager.to_tuple()
@@ -276,11 +267,11 @@ class Tuple(LazyValueWrapper, _GetItemMixin):
return tuple_
class Generic(_WithIndexBase, _GetItemMixin):
class Generic(_WithIndexBase):
pass
class Protocol(_WithIndexBase, _GetItemMixin):
class Protocol(_WithIndexBase):
pass