@@ -2583,7 +2583,7 @@ def last_known_value() -> None:
25832583 reveal_type(z) # N: Revealed type is "builtins.str"
25842584[builtins fixtures/primitives.pyi]
25852585
2586- [case testInvalidArgumentInOverloadError ]
2586+ [case testOverloadUnexpectedKeywordArgWithTypoSuggestion ]
25872587from typing import overload, Union
25882588
25892589@overload
@@ -2595,47 +2595,126 @@ def f(foobar: str) -> None: ...
25952595def f(foobar: Union[int, str]) -> None: pass
25962596
25972597f(fobar=1) # E: Unexpected keyword argument "fobar" for overloaded function "f"; did you mean "foobar"?
2598+ [builtins fixtures/list.pyi]
2599+
2600+ [case testOverloadUnexpectedKeywordArgNoMatch]
2601+ from typing import overload, Union
2602+
2603+ @overload
2604+ def f(foobar: int) -> None: ...
2605+
2606+ @overload
2607+ def f(foobar: str) -> None: ...
2608+
2609+ def f(foobar: Union[int, str]) -> None: pass
2610+
25982611f(random=[1,2,3]) # E: Unexpected keyword argument "random" for overloaded function "f" \
25992612 # N: Possible overload variants: \
26002613 # N: def f(foobar: int) -> None \
26012614 # N: def f(foobar: str) -> None \
26022615 # E: No overload variant of "f" matches argument type "list[int]"
2616+ [builtins fixtures/list.pyi]
2617+
2618+ [case testOverloadMultipleUnexpectedKeywordArgs]
2619+ from typing import overload, Union
2620+
2621+ @overload
2622+ def f(foobar: int) -> None: ...
2623+
2624+ @overload
2625+ def f(foobar: str) -> None: ...
2626+
2627+ def f(foobar: Union[int, str]) -> None: pass
26032628
26042629f(fobar=1, baz=2) # E: Unexpected keyword argument "fobar" for overloaded function "f"; did you mean "foobar"? \
26052630 # E: Unexpected keyword argument "baz" for overloaded function "f"
2631+ [builtins fixtures/list.pyi]
2632+
2633+ [case testOverloadManyUnexpectedKeywordArgs]
2634+ from typing import overload, Union
2635+
2636+ @overload
2637+ def f(foobar: int) -> None: ...
2638+
2639+ @overload
2640+ def f(foobar: str) -> None: ...
2641+
2642+ def f(foobar: Union[int, str]) -> None: pass
26062643
26072644f(foobar=1, a=2, b=3, c=4, d=5, e=6) # E: Unexpected keyword arguments "a", "b", "c", "d", "e" for overloaded function "f" \
26082645 # E: No overload variant of "f" matches argument types "int", "int", "int", "int", "int", "int" \
26092646 # N: Possible overload variants: \
26102647 # N: def f(foobar: int) -> None \
26112648 # N: def f(foobar: str) -> None
2649+ [builtins fixtures/list.pyi]
2650+
2651+ [case testOverloadUnexpectedKeywordArgsWithTypeMismatch]
2652+ from typing import overload, Union
26122653
26132654@overload
2614- def g(x : int, y: int ) -> int : ...
2655+ def f(foobar : int) -> None : ...
26152656
26162657@overload
2617- def g(x : str, y: str ) -> str : ...
2658+ def f(foobar : str) -> None : ...
26182659
2619- def g(x: Union[int, str], y: Union[int, str]) -> Union[int, str]:
2620- return x
2660+ def f(foobar: Union[int, str]) -> None: pass
26212661
26222662f(fobar=1, other=[1,2,3]) # E: Unexpected keyword argument "fobar" for overloaded function "f"; did you mean "foobar"? \
26232663 # E: Unexpected keyword argument "other" for overloaded function "f" \
26242664 # N: Possible overload variants: \
26252665 # N: def f(foobar: int) -> None \
26262666 # N: def f(foobar: str) -> None \
26272667 # E: No overload variant of "f" matches argument types "int", "list[int]"
2668+ [builtins fixtures/list.pyi]
2669+
2670+ [case testOverloadPositionalArgTypeMismatch]
2671+ from typing import overload, Union
2672+
2673+ @overload
2674+ def g(x: int, y: int) -> int: ...
2675+
2676+ @overload
2677+ def g(x: str, y: str) -> str: ...
2678+
2679+ def g(x: Union[int, str], y: Union[int, str]) -> Union[int, str]:
2680+ return x
26282681
26292682g([1, 2], 3) # E: No overload variant of "g" matches argument types "list[int]", "int" \
26302683 # N: Possible overload variants: \
26312684 # N: def g(x: int, y: int) -> int \
26322685 # N: def g(x: str, y: str) -> str
2686+ [builtins fixtures/list.pyi]
2687+
2688+ [case testOverloadUnexpectedKeywordWithPositionalMismatch]
2689+ from typing import overload, Union
2690+
2691+ @overload
2692+ def g(x: int, y: int) -> int: ...
2693+
2694+ @overload
2695+ def g(x: str, y: str) -> str: ...
2696+
2697+ def g(x: Union[int, str], y: Union[int, str]) -> Union[int, str]:
2698+ return x
26332699
26342700g([1, 2], z=3) # E: Unexpected keyword argument "z" for overloaded function "g" \
26352701 # E: No overload variant of "g" matches argument types "list[int]", "int" \
26362702 # N: Possible overload variants: \
26372703 # N: def g(x: int, y: int) -> int \
26382704 # N: def g(x: str, y: str) -> str
2705+ [builtins fixtures/list.pyi]
2706+
2707+ [case testOverloadNamedArgTypeMismatch]
2708+ from typing import overload, Union
2709+
2710+ @overload
2711+ def g(x: int, y: int) -> int: ...
2712+
2713+ @overload
2714+ def g(x: str, y: str) -> str: ...
2715+
2716+ def g(x: Union[int, str], y: Union[int, str]) -> Union[int, str]:
2717+ return x
26392718
26402719g(x="hello", y=1) # E: No overload variant of "g" matches argument types "str", "int" \
26412720 # N: Possible overload variants: \
0 commit comments