`invalid-variance` false negative when typevar is part of a union or used in another type
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 516
- PR merge metrics
- No merged PRs in 30d
Description
### Describe the Bug
```python
from typing import TypeVar, Generic, Iterable
_T_co = TypeVar("_T_co", covariant=True)
class Foo(Generic[_T_co]):
def foo(self, instance: _T_co) -> None: ... # error
def bar(self, instance: _T_co | None) -> None: ... # no error
def baz(self, instance: Iterable[_T_co]) -> None: ... # no error
```
Python: 3.14
### Sandbox Link
https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEALqcROgOZ0Q3G6UN0AVZjABqqSgBo6AcRjoYlCAGMpASQYLU2WAB10egPoCDS3HQC8g4WMoAKHSCMncDqaYBu4iBgbmBlAFcYAEo9PSUoVDg4OgAxXFxbWXlFJQBtJ1MAXWDEPToCukwYMDowBNs4GCgwKVY4BgwlGEQ6TNxgugBaAD46ADlceVbCUboAYjoFakp8wuLS7HFK6trOdAamlrbjUzoAHwGhkO6%2BweG6UcIJunQzad45goW6JYAvFZq6jcb0Ztb1JptDAMrtcDlTkcLlcbncppQZiAJCAyJQSlBSIQGLQoBQyAwABZDLruBRwCBDCx0BwAZkIAEYACwOPRpB6UOBZPTFYhopSoDSYKkOdkOanoLjEKDKCAMLpaBqUVBKOURKIxSwihGPEB6SXSpSyrqS3j8TUgUUgcX6mUMDFdBasGCYeUMBiKbABDTCi3a2a69A0CDRVhsLpwXABSjNH2WvR3dBdGD4AmoAINCCkro0AVKAmxv0s9B3OVogCOAQgaJdAGsYKR5UpmtECzMi7hiHIugF0MRlTXQ62deLqz3MD4uvyGkP-SPnWOJ6YsLKKegZ2K9D35M20JQG6ZuF4I2vzZa56TUFAukxO%2BurZNWOVN8WYDvxA2bzBJ0NSRzV3fxR7NFlVTYEAOfYC8y0WBs1zAlJyiGBwPQID4FwKBPGBB0xwUeUoCgZCe0-F0TT4QiUKqEi2DuNFkM8RQtmzYMcwYPNkNYTxpRdYpTCVbFKDvEAAF9kWVBhMxgWJoBgCg0CwPAiDIYSgA
### (Only applicable for extension issues) IDE Information
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.