1
0
forked from VimPlug/jedi

Support passing values through decorators from factories

This builds on the approach taken in https://github.com/davidhalter/jedi/pull/1613
but applies it to type vars themselves so that their type var
nature is preserved when a function returns Callable[[T], T] and
the T has an upper bound.
This commit is contained in:
Peter Law
2020-06-14 18:17:09 +01:00
parent 2d0258db1a
commit 5184d0cb9c
3 changed files with 59 additions and 3 deletions

View File

@@ -14,7 +14,7 @@ from jedi.inference.cache import inference_state_method_cache
from jedi.inference.base_value import ValueSet, NO_VALUES
from jedi.inference.gradual.base import DefineGenericBaseClass, GenericClass
from jedi.inference.gradual.generics import TupleGenericManager
from jedi.inference.gradual.type_var import TypeVar
from jedi.inference.gradual.type_var import TypeVar, TypeVarWrapper
from jedi.inference.helpers import is_string
from jedi.inference.compiled import builtin_from_name
from jedi.inference.param import get_executed_param_names
@@ -281,7 +281,8 @@ def infer_return_for_callable(arguments, param_values, result_values):
return ValueSet.from_sets(
v.define_generics(all_type_vars)
if isinstance(v, (DefineGenericBaseClass, TypeVar)) else ValueSet({v})
if isinstance(v, (DefineGenericBaseClass, TypeVar, TypeVarWrapper))
else ValueSet({v})
for v in result_values
).execute_annotation()