The type revealed when type checking the above fragment changed as a side effect of #16184, and this looks like a regression:
from typing import TypeVar
T = TypeVar("T", bound="Base")
class Base:
def __abs__(self: T) -> T:
return type(self)()
class C(Base):
pass
def f(values: list[T]) -> T:
return values[0]
def g() -> None:
x = abs(f([C()]))
reveal_type(x) # "Base", but expected "C" <<------
cc @ilevkivskyi
The type revealed when type checking the above fragment changed as a side effect of #16184, and this looks like a regression:
cc @ilevkivskyi