Skip to content

Missing validation for typevars that explicitly declares their variance #1066

@grievejia

Description

@grievejia

Describe the Bug

MInimal repro:

from typing import TypeVar, Generic

T = TypeVar("T", covariant=True)
U = TypeVar("U", contravariant=True)

class Foo(Generic[T, U]):
    def bad0(self, x: T) -> None: ...
    def bar1(self) -> U: ...

Expected: Error saying that covariant T cannot be used on contravariant positions (e.g. toplevel param type), and contravariant U cannot be used on covariant positions (e.g. toplevel return type).
Actual: No error

Sandbox Link

https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEALqcROgOZ0Q3G6UN0AVZjABqqSgBo6AcRjoYlCAGMAOujUC6AXkHCxlABQqQA41KW4AbuIgYGWgZQCuMAJRqAqtt3FR4oyAeZnQW6AyUqNaKdg7ObmpqSlCocHB0AGK4uAay8opKANoCUh4Auq6IanTVdJgwYHTYqJgADAZwMFBgUviIgq50ALQAfHQAcrjyfYQzVTV1DU2UAIztnWADI3Qe0zMgEiBODNBwJOSIIADE28dQEEx0YE7oSseTcAlY9Y%2B8NKgMAH10E4aNgFAZepwwptRnBwpV0DU6JQYAwnJREWBjGMQWDKH1gPgAL7GNQgIkHVCvCCWGDpaAwChoLB4IhkclAA&version=3.12

(Only applicable for extension issues) IDE Information

No response

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions