Fix an issue with Tuple generics

This commit is contained in:
Dave Halter
2020-05-16 14:55:59 +02:00
parent 9942a3d44c
commit 0db50b521d
2 changed files with 23 additions and 8 deletions

View File

@@ -138,13 +138,6 @@ class ProxyWithGenerics(BaseTypingClassWithGenerics):
def gather_annotation_classes(self):
return ValueSet.from_sets(self._generics_manager.to_tuple())
def _create_instance_with_generics(self, generics_manager):
return ProxyWithGenerics(
self.parent_context,
self._tree_name,
generics_manager
)
def infer_type_vars(self, value_set):
annotation_generics = self.get_generics()
@@ -232,6 +225,13 @@ class TypingClassWithGenerics(_TypingClassMixin, ProxyWithGenerics):
return type_var_dict
def _create_instance_with_generics(self, generics_manager):
return TypingClassWithGenerics(
self.parent_context,
self._tree_name,
generics_manager
)
class ProxyTypingClassValue(_TypingClassMixin, ProxyTypingValue):
index_class = TypingClassWithGenerics

View File

@@ -1,5 +1,5 @@
# python >= 3.6
from typing import List, Dict, overload
from typing import List, Dict, overload, Tuple, TypeVar
lst: list
list_alias: List
@@ -72,3 +72,18 @@ overload_f1(list_alias)
overload_f1(list_str)
#? str() dict()
overload_f1(list_int)
# -------------------------
# Broken Matching
# -------------------------
T = TypeVar('T')
@overload
def broken_f1(value: 1) -> str: ...
@overload
def broken_f1(value: Tuple[T]) -> Tuple[T]: ...
tup: Tuple[float]
#? float()
broken_f1(broken_f1(tup))[0]