diff --git a/jedi/inference/gradual/annotation.py b/jedi/inference/gradual/annotation.py index 4624f560..bda6c20b 100644 --- a/jedi/inference/gradual/annotation.py +++ b/jedi/inference/gradual/annotation.py @@ -278,17 +278,17 @@ def infer_type_vars_for_execution(function, arguments, annotation_dict): def infer_return_for_callable(arguments, param_values, result_values): - result = NO_VALUES + all_type_vars = {} for pv in param_values: if pv.array_type == 'list': type_var_dict = infer_type_vars_for_callable(arguments, pv.py__iter__()) + all_type_vars.update(type_var_dict) - result |= ValueSet.from_sets( - v.define_generics(type_var_dict) - if isinstance(v, (DefineGenericBase, TypeVar)) else ValueSet({v}) - for v in result_values - ).execute_annotation() - return result + return ValueSet.from_sets( + v.define_generics(type_var_dict) + if isinstance(v, (DefineGenericBase, TypeVar)) else ValueSet({v}) + for v in result_values + ).execute_annotation() def infer_type_vars_for_callable(arguments, lazy_params): diff --git a/test/completion/pep0484_typing.py b/test/completion/pep0484_typing.py index 9104ca11..4ebab2e9 100644 --- a/test/completion/pep0484_typing.py +++ b/test/completion/pep0484_typing.py @@ -436,6 +436,12 @@ def the_callable() -> float: ... #? float() call3_pls()(the_callable)[0] +def call4_pls(fn: typing.Callable[..., TYPE_VARX]) -> typing.Callable[..., TYPE_VARX]: + return "" + +#? int() +call4_pls(lambda x: 1)() + # ------------------------- # TYPE_CHECKING # -------------------------