Open
Description
We should reject a bound covariant type variable in an argument type (i.e., in a contravariant position). For example, this should be rejected:
T = TypeVar('T', covariant=True)
class A(Generic[T]):
def foo(self, x: T) -> None: ... # Can't use as argument type! Return type is okay.
Similarly, a contravariant type variable should not be used in a return type.
The actual rule is probably a bit more involved than what I gave above, but this would probably cover most cases.