diff --git a/jedi/evaluate/context/function.py b/jedi/evaluate/context/function.py index 992cecdf..ecb7d6c0 100644 --- a/jedi/evaluate/context/function.py +++ b/jedi/evaluate/context/function.py @@ -150,8 +150,12 @@ class FunctionExecutionContext(TreeContext): returns = get_yield_exprs(self.evaluator, funcdef) else: returns = funcdef.iter_return_stmts() - context_set = docstrings.infer_return_types(self.function_context) - context_set |= pep0484.infer_return_types(self.function_context) + context_set = pep0484.infer_return_types(self.function_context) + if context_set: + # If there are annotations, prefer them over anything else. + # This will make it faster. + return context_set + context_set |= docstrings.infer_return_types(self.function_context) for r in returns: check = flow_analysis.reachability_check(self, funcdef, r) diff --git a/jedi/evaluate/filters.py b/jedi/evaluate/filters.py index fd41b55a..fae4f9e0 100644 --- a/jedi/evaluate/filters.py +++ b/jedi/evaluate/filters.py @@ -332,7 +332,7 @@ class _BuiltinMappedMethod(Context): self._method = method self._builtin_func = builtin_func - def py__call__(self, params): + def py__call__(self, arguments): # TODO add TypeError if params are given/or not correct. return self._method(self.parent_context) diff --git a/jedi/plugins/typeshed.py b/jedi/plugins/typeshed.py index 4ad7fa57..4ab3e724 100644 --- a/jedi/plugins/typeshed.py +++ b/jedi/plugins/typeshed.py @@ -290,4 +290,5 @@ class ClassStubContext(_StubContextFilterMixin, ClassContext): class FunctionStubContext(_MixedStubContextMixin, FunctionContext): - pass + def py__call__(self, arguments): + return self.stub_context.py__call__(arguments) diff --git a/test/test_plugin/test_stub.py b/test/test_plugin/test_stub.py index 89377b92..080c5d4f 100644 --- a/test/test_plugin/test_stub.py +++ b/test/test_plugin/test_stub.py @@ -74,3 +74,7 @@ def test_method(Script): context = def_._name._context assert isinstance(context, BoundMethod), context assert isinstance(context._function, typeshed.FunctionStubContext), context + + def_, = Script(code + '()').goto_definitions() + context = def_._name._context + assert isinstance(context, BoundMethod), context