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:

(Also I noticed that PEP 484 is still "Provisional".)

 - Sebastian