Switch to much simpler solution for preserving unbound type vars

Co-Authored-By: Dave Halter <davidhalter88@gmail.com>
This commit is contained in:
Peter Law
2020-06-26 11:23:35 +01:00
parent 5184d0cb9c
commit f72adf0cbc
2 changed files with 3 additions and 17 deletions

View File

@@ -14,7 +14,7 @@ from jedi.inference.cache import inference_state_method_cache
from jedi.inference.base_value import ValueSet, NO_VALUES
from jedi.inference.gradual.base import DefineGenericBaseClass, GenericClass
from jedi.inference.gradual.generics import TupleGenericManager
from jedi.inference.gradual.type_var import TypeVar, TypeVarWrapper
from jedi.inference.gradual.type_var import TypeVar
from jedi.inference.helpers import is_string
from jedi.inference.compiled import builtin_from_name
from jedi.inference.param import get_executed_param_names
@@ -281,7 +281,7 @@ def infer_return_for_callable(arguments, param_values, result_values):
return ValueSet.from_sets(
v.define_generics(all_type_vars)
if isinstance(v, (DefineGenericBaseClass, TypeVar, TypeVarWrapper))
if isinstance(v, (DefineGenericBaseClass, TypeVar))
else ValueSet({v})
for v in result_values
).execute_annotation()

View File

@@ -102,12 +102,7 @@ class TypeVar(BaseTypingValue):
else:
if found:
return found
classes = self._get_classes()
if not classes:
return ValueSet({self})
return ValueSet(TypeVarWrapper(cls, self) for cls in classes)
return ValueSet({self})
def execute_annotation(self):
return self._get_classes().execute_annotation()
@@ -127,15 +122,6 @@ class TypeVar(BaseTypingValue):
return '<%s: %s>' % (self.__class__.__name__, self.py__name__())
class TypeVarWrapper(ValueWrapper):
def __init__(self, wrapped_value, original_value):
super(TypeVarWrapper, self).__init__(wrapped_value)
self._original_value = original_value
def define_generics(self, type_var_dict):
return self._original_value.define_generics(type_var_dict)
class TypeWrapper(ValueWrapper):
def __init__(self, wrapped_value, original_value):
super(TypeWrapper, self).__init__(wrapped_value)