Consider this simple example that crashes:
from typing import overload
def f() -> None:
@overload
def g(x: str) -> str: ...
@overload
def g(x: int) -> int: ...
def g(x):
pass
g(str())
Adding a reveal_type(g) shows that overload variants are not analyzed at all, it shows:
Revealed type is 'Overload(def (x: str?) -> str?, def (x: int?) -> int?)'