forked from VimPlug/jedi
Fix some issues with sub class matching, fixes #1560
This commit is contained in:
@@ -138,8 +138,13 @@ class DefineGenericBaseClass(LazyValueWrapper):
|
|||||||
any(
|
any(
|
||||||
# TODO why is this ordering the correct one?
|
# TODO why is this ordering the correct one?
|
||||||
cls2.is_same_class(cls1)
|
cls2.is_same_class(cls1)
|
||||||
for cls1 in class_set1
|
# TODO I'm still not sure gather_annotation_classes is a good
|
||||||
for cls2 in class_set2
|
# idea. They are essentially here to avoid comparing Tuple <=>
|
||||||
|
# tuple and instead compare tuple <=> tuple, but at the moment
|
||||||
|
# the whole `is_same_class` and `is_sub_class` matching is just
|
||||||
|
# not in the best shape.
|
||||||
|
for cls1 in class_set1.gather_annotation_classes()
|
||||||
|
for cls2 in class_set2.gather_annotation_classes()
|
||||||
) for class_set1, class_set2 in zip(given_params1, given_params2)
|
) for class_set1, class_set2 in zip(given_params1, given_params2)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# python >= 3.4
|
# python >= 3.4
|
||||||
from typing import Any, Iterable, List, Sequence, Tuple, TypeVar, Union
|
from typing import Any, Iterable, List, Sequence, Tuple, TypeVar, Union, Generic
|
||||||
|
|
||||||
T = TypeVar('T')
|
T = TypeVar('T')
|
||||||
U = TypeVar('U')
|
U = TypeVar('U')
|
||||||
@@ -142,3 +142,17 @@ CustomList[str]().get_first()
|
|||||||
typed_fully_generic_passthrough(CustomList[str]())[0]
|
typed_fully_generic_passthrough(CustomList[str]())[0]
|
||||||
#?
|
#?
|
||||||
typed_list_generic_passthrough(CustomList[str])[0]
|
typed_list_generic_passthrough(CustomList[str])[0]
|
||||||
|
|
||||||
|
|
||||||
|
class That(Generic[T]):
|
||||||
|
def __init__(self, items: List[Tuple[str, T]]) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get(self) -> T:
|
||||||
|
pass
|
||||||
|
|
||||||
|
inst = That([("abc", 2)])
|
||||||
|
|
||||||
|
# No completions here, but should have completions for `int`
|
||||||
|
#? int()
|
||||||
|
inst.get()
|
||||||
|
|||||||
Reference in New Issue
Block a user