diff --git a/jedi/inference/value/decorator.py b/jedi/inference/value/decorator.py index 4a4a9b17..3d8df898 100644 --- a/jedi/inference/value/decorator.py +++ b/jedi/inference/value/decorator.py @@ -19,3 +19,11 @@ class Decoratee(ValueWrapper): Decoratee(v, self._original_value) for v in self._wrapped_value.py__get__(instance, class_value) ) + + def get_signatures(self): + signatures = self._wrapped_value.get_signatures() + if signatures: + return signatures + # Fallback to signatures of the original function/class if the + # decorator has no signature or it is not inferrable. + return self._original_value.get_signatures() diff --git a/test/test_inference/test_signature.py b/test/test_inference/test_signature.py index 02f119a8..a839fffd 100644 --- a/test/test_inference/test_signature.py +++ b/test/test_inference/test_signature.py @@ -102,6 +102,8 @@ class X: (partialmethod_code + 'X().d(', None), (partialmethod_code + 'X.c(', 'func(a, b)'), (partialmethod_code + 'X.d(', None), + + ('import contextlib\n@contextlib.contextmanager\ndef f(x): pass\nf(', 'f(x)'), ] ) def test_tree_signature(Script, environment, code, expected):