Description
Following #7188, we can now have:
from typing import overload
from typing_extensions import Literal
class Cat:
@overload
def __new__(cls, name: Literal['Tabby']) -> 'Tabby': ...
@overload
def __new__(cls, name: Literal['Kitty']) -> 'Kitty': ...
def __new__(cls, name: str) -> 'Cat': ...
class Kitty(Cat):
pass
class Tabby(Cat):
pass
reveal_type(Cat('Kitty'))
reveal_type(Cat('Tabby'))
result in:
Revealed type is 'test.Kitty'
Revealed type is 'test.Tabby'
(Meant as a trivial example.)
However, this doesn't extend to derived classes:
reveal_type(Tabby('Kitty'))
reveal_type(Tabby('Tabby'))
would result in:
Revealed type is 'test.Tabby'
Revealed type is 'test.Tabby'
I'm using mypy 0.761.