This came up in https://github.com/python/typeshed/pull/5067. In typeshed we have a few places where we assume that overloads are processed in definition order. For example:
```
@overload
def foo(x: float) -> int: ...
@overload
def foo(x: object) -> str: ...
reveal_type(foo(1.3)) # should be "int"
```
mypy warns about this case and must be silenced with "# type: ignore", but accepts it as do the other type checkers to my knowledge. I was surprised that this behavior is not described in either PEP 484 nor the typing docs. What can we do about this?
I see the following options:
- Sebastian