diff --git a/jedi/inference/gradual/typing.py b/jedi/inference/gradual/typing.py index 979d5013..d7e67bfc 100644 --- a/jedi/inference/gradual/typing.py +++ b/jedi/inference/gradual/typing.py @@ -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 diff --git a/test/completion/pep0484_overload.py b/test/completion/pep0484_overload.py index b8df3797..22c67704 100644 --- a/test/completion/pep0484_overload.py +++ b/test/completion/pep0484_overload.py @@ -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]