@@ -5173,3 +5173,25 @@ def f2(g: G[A, Any]) -> A: ... # E: Overloaded function signatures 1 and 2 over
5173
5173
@overload
5174
5174
def f2(g: G[A, B], x: int = ...) -> B: ...
5175
5175
def f2(g: Any, x: int = ...) -> Any: ...
5176
+
5177
+ [case testOverloadKeywordArgsAndKwargs]
5178
+ from typing import Optional, overload
5179
+
5180
+ @overload
5181
+ def f(x: int = 0, **kwargs: str) -> None:
5182
+ ...
5183
+ @overload
5184
+ def f(x: int = 0, *, y: int, **kwargs: str) -> str:
5185
+ ...
5186
+ def f(x: int = 0, *, y: Optional[int] = None, **kwargs: str) -> Optional[str]:
5187
+ ...
5188
+
5189
+ reveal_type(f(0)) # N: Revealed type is "None"
5190
+ reveal_type(f(1, foo='bar')) # N: Revealed type is "None"
5191
+ reveal_type(f(1, y=2, foo='bar')) # N: Revealed type is "builtins.str"
5192
+ f(1, **{'y': 0, 'z': 'a'}) # E: No overload variant of "f" matches argument types "int", "Dict[str, object]" \
5193
+ # N: Possible overload variants: \
5194
+ # N: def f(x: int = ..., **kwargs: str) -> None \
5195
+ # N: def f(x: int = ..., *, y: int, **kwargs: str) -> str
5196
+
5197
+ [builtins fixtures/dict.pyi]
0 commit comments