diff --git a/jedi/inference/gradual/base.py b/jedi/inference/gradual/base.py index e47b566c..75d26903 100644 --- a/jedi/inference/gradual/base.py +++ b/jedi/inference/gradual/base.py @@ -217,18 +217,19 @@ class GenericClass(ClassMixin, DefineGenericBase): # Note: we need to handle the MRO _in order_, so we need to extract # the elements from the set first, then handle them, even if we put # them back in a set afterwards. - for element in value_set: - if element.api_type == u'function': - # Functions & methods don't have an MRO and we're not + for py_class in value_set: + if not is_class_value: + if py_class.is_instance(): + py_class = py_class.get_annotated_class_object() + else: + continue + + if py_class.api_type != u'class': + # Functions & modules don't have an MRO and we're not # expecting a Callable (those are handled separately within # TypingClassValueWithIndex). continue - if element.is_instance(): - py_class = element.get_annotated_class_object() - else: - py_class = element - for parent_class in py_class.py__mro__(): class_name = parent_class.py__name__() if annotation_name == class_name: diff --git a/test/completion/pep0484_generic_mismatches.py b/test/completion/pep0484_generic_mismatches.py index bd7d393a..47add048 100644 --- a/test/completion/pep0484_generic_mismatches.py +++ b/test/completion/pep0484_generic_mismatches.py @@ -1,4 +1,5 @@ # python >= 3.4 +import typing from typing import ( Callable, Dict, @@ -51,6 +52,10 @@ x1 = list_t_to_list_t(foo)[0] #? x1 +x1 = list_t_to_list_t(typing)[0] +#? +x1 + x2 = list_t_to_list_t(tpl)[0] #? x2