Use _create_instance_with_generics

This commit is contained in:
Dave Halter
2019-12-08 23:09:55 +01:00
parent 5874b0bd69
commit d9ddaa31ae

View File

@@ -122,8 +122,8 @@ class DefineGenericBase(LazyValueWrapper):
def __init__(self, generics_manager): def __init__(self, generics_manager):
self._generics_manager = generics_manager self._generics_manager = generics_manager
def _get_fixed_generics_cls(self): def _create_instance_with_generics(self, generics_manager):
return GenericClass raise NotImplementedError
@inference_state_method_cache() @inference_state_method_cache()
def get_generics(self): def get_generics(self):
@@ -151,8 +151,7 @@ class DefineGenericBase(LazyValueWrapper):
# cached results. # cached results.
return ValueSet([self]) return ValueSet([self])
return ValueSet([self._get_fixed_generics_cls()( return ValueSet([self._create_instance_with_generics(
self._wrapped_value,
TupleGenericManager(tuple(new_generics)) TupleGenericManager(tuple(new_generics))
)]) )])
@@ -212,6 +211,9 @@ class GenericClass(ClassMixin, DefineGenericBase):
for base in self._wrapped_value.py__bases__(): for base in self._wrapped_value.py__bases__():
yield _LazyGenericBaseClass(self, base) yield _LazyGenericBaseClass(self, base)
def _create_instance_with_generics(self, generics_manager):
return GenericClass(self._class_value, generics_manager)
class _LazyGenericBaseClass(object): class _LazyGenericBaseClass(object):
def __init__(self, class_value, lazy_base_class): def __init__(self, class_value, lazy_base_class):