From e56d4fde98cff301b7cf2f0b3caf9baf73442cb2 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 20 Dec 2019 00:30:57 +0100 Subject: [PATCH] Improved Generic subclass matching --- jedi/inference/gradual/base.py | 5 +++++ test/completion/pep0484_overload.py | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/jedi/inference/gradual/base.py b/jedi/inference/gradual/base.py index cad9a740..e09766be 100644 --- a/jedi/inference/gradual/base.py +++ b/jedi/inference/gradual/base.py @@ -183,6 +183,11 @@ class GenericClass(ClassMixin, DefineGenericBase): def _create_instance_with_generics(self, generics_manager): return GenericClass(self._class_value, generics_manager) + def is_sub_class_of(self, class_value): + if super(GenericClass, self).is_sub_class_of(class_value): + return True + return self._class_value.is_sub_class_of(class_value) + class _LazyGenericBaseClass(object): def __init__(self, class_value, lazy_base_class): diff --git a/test/completion/pep0484_overload.py b/test/completion/pep0484_overload.py index be48bd89..aced3728 100644 --- a/test/completion/pep0484_overload.py +++ b/test/completion/pep0484_overload.py @@ -1,6 +1,9 @@ -# python >= 3.4 +# python >= 3.6 from typing import List, Dict, overload +lst: list +list_alias: List +list_str: List[str] # ------------------------- # With base classes @@ -15,6 +18,12 @@ def overload_f2(value: Dict) -> int: ... overload_f2(['']) #? int() overload_f2({1.0: 1.0}) +#? str() +overload_f2(lst) +#? str() +overload_f2(list_alias) +#? str() +overload_f2(list_str) @overload @@ -26,3 +35,9 @@ def overload_f3(value: dict) -> float: ... overload_f3(['']) #? float() overload_f3({1.0: 1.0}) +#? str() +overload_f3(lst) +#? str() +overload_f3(list_alias) +#? str() +overload_f3(list_str)