From 0474371f23c08e2cfef90d4a8d0152c27a87fa39 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sat, 7 Dec 2019 00:30:21 +0100 Subject: [PATCH] Make sure overload signatures work, see #1417 --- test/examples/typing_overload/file.py | 2 ++ test/examples/typing_overload/file.pyi | 8 ++++++++ test/test_inference/test_signature.py | 10 ++++++++++ 3 files changed, 20 insertions(+) create mode 100644 test/examples/typing_overload/file.py create mode 100644 test/examples/typing_overload/file.pyi diff --git a/test/examples/typing_overload/file.py b/test/examples/typing_overload/file.py new file mode 100644 index 00000000..19f3149d --- /dev/null +++ b/test/examples/typing_overload/file.py @@ -0,0 +1,2 @@ +def with_overload(x, y: int) -> list: + pass diff --git a/test/examples/typing_overload/file.pyi b/test/examples/typing_overload/file.pyi new file mode 100644 index 00000000..1f31b543 --- /dev/null +++ b/test/examples/typing_overload/file.pyi @@ -0,0 +1,8 @@ +from typing import overload + + +@overload +def with_overload(x: int, y: int) -> float: ... + +@overload +def with_overload(x: str, y: list) -> float: ... diff --git a/test/test_inference/test_signature.py b/test/test_inference/test_signature.py index 47c8ec46..7b1e4b2b 100644 --- a/test/test_inference/test_signature.py +++ b/test/test_inference/test_signature.py @@ -1,10 +1,12 @@ from textwrap import dedent from operator import ge, lt import re +import os import pytest from jedi.inference.gradual.conversion import _stub_to_python_value_set +from ..helpers import get_example_dir @pytest.mark.parametrize( @@ -289,3 +291,11 @@ def test_param_resolving_to_static(Script, stmt, expected, skip_pre_python35): sig, = Script(code).call_signatures() assert sig.to_string() == expected + + +def test_overload(Script): + dir_ = get_example_dir('typing_overload') + code = 'from file import with_overload; with_overload(' + x1, x2 = Script(code, path=os.path.join(dir_, 'foo.py')).call_signatures() + assert x1.to_string() == 'with_overload(x: int, y: int) -> float' + assert x2.to_string() == 'with_overload(x: str, y: list) -> float'