Merge GenericClass and _AbstractAnnotatedClass

This commit is contained in:
Dave Halter
2019-12-08 22:43:41 +01:00
parent ad92882c48
commit 5c4b3da45d

View File

@@ -132,7 +132,7 @@ class DefineGenericBase(LazyValueWrapper):
for generic_set in self.get_generics():
values = NO_VALUES
for generic in generic_set:
if isinstance(generic, (_AbstractAnnotatedClass, TypeVar)):
if isinstance(generic, (GenericClass, TypeVar)):
result = generic.define_generics(type_var_dict)
values |= result
if result != ValueSet({generic}):
@@ -185,18 +185,19 @@ class DefineGenericBase(LazyValueWrapper):
)
class _AbstractAnnotatedClass(ClassMixin, DefineGenericBase):
def __init__(self, wrapped_class):
self._wrapped_class = wrapped_class
class GenericClass(ClassMixin, DefineGenericBase):
def __init__(self, class_value, generics_manager):
self._class_value = class_value
self._generics_manager = generics_manager
def _get_wrapped_value(self):
return self._wrapped_class
return self._class_value
def get_type_var_filter(self):
return TypeVarFilter(self.get_generics(), self.list_type_vars())
def py__call__(self, arguments):
instance, = super(_AbstractAnnotatedClass, self).py__call__(arguments)
instance, = super(GenericClass, self).py__call__(arguments)
return ValueSet([_InstanceWrapper(instance)])
def _as_context(self):
@@ -207,12 +208,6 @@ class _AbstractAnnotatedClass(ClassMixin, DefineGenericBase):
for base in self._wrapped_value.py__bases__():
yield _LazyAnnotatedBaseClass(self, base)
class GenericClass(_AbstractAnnotatedClass):
def __init__(self, class_value, generics_manager):
super(GenericClass, self).__init__(class_value)
self._generics_manager = generics_manager
@inference_state_method_cache()
def get_generics(self):
return self._generics_manager.to_tuple()
@@ -226,7 +221,7 @@ class _LazyAnnotatedBaseClass(object):
@iterator_to_value_set
def infer(self):
for base in self._lazy_base_class.infer():
if isinstance(base, _AbstractAnnotatedClass):
if isinstance(base, GenericClass):
# Here we have to recalculate the given types.
yield GenericClass.create_cached(
base.inference_state,