False positive with overloaded async iterators
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 516
- PR merge metrics
- No merged PRs in 30d
Description
### Describe the Bug
Minimal repro:
```python
from collections.abc import AsyncIterator
from typing import Literal, overload
class Patch:
pass
class FullState(Patch):
pass
@overload
async def astream(*, diff: Literal[True] = ...) -> AsyncIterator[Patch]: ... # pyrefly FP: inconsistent-overload
@overload
async def astream(*, diff: Literal[False]) -> AsyncIterator[FullState]: ... # pyrefly FP: inconsistent-overload
async def astream(*, diff: bool = True) -> AsyncIterator[Patch] | AsyncIterator[FullState]:
"""Stream results as either diffs or accumulated state.
When diff=True, yields Patch objects (valid for AsyncIterator[Patch]).
When diff=False, yields FullState objects (valid for AsyncIterator[FullState]).
Pyrefly incorrectly flags the Patch yield as incompatible with FullState.
"""
if diff:
patch = Patch()
yield patch # pyrefly FP: invalid-yield
else:
state = FullState()
yield state
```
### Sandbox Link
https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEAxrlLAwC4S7pyGrYN0INYrkps6AQTil0DAJJsYlVG1EAddGGr02pYhHQBzQcNHiAMhEXKoAGjq4Abkqi5UmDRoZRUcOHQAFFQYAC0QNOki6Yl84Lx8-OgAxAFcWAGU2FRgACiC2UIBKcPQo6NjPdAABJxc3D3RfGQFMGDA6XzZKGFQaHIAqe0wIMDBEOktrVCgAbQAVShSYAF06AF46Qi3CugBaAD5JaVkFJRVRGfzQ5fGtwkiAYmjSbrAoUmSA8YMmbgg4RToNi7WqUVzuDQ1Zxg%2BoaJqyOitdqdbq9AZDEZjCZWM6zJLTOArHYHI7NU7KVSUGapDJZRQ3TZbR7PV7vT7fWRcOD-QHA0HghrwlptDoA1F9QaIzHjPDMdZ0BZLYmHKRkqaUy7BEKrAA%2BpJO6ouNKgmWyNwiUTUICtVsy4ro3TgaTY-l8dBgVhCSilo38og6DAYKRoaWymDoAOyhEqZQA6l7SsNRmtFTB7KQIDAoJh-FcQg5sAArGDsfw5RzTCDhsD%2B1UGs4avPLQrR0pReMwROYtb4qCE9OZ7P%2BY2mxQF4ulujlyvV2vHeSGqkjulE1tlAIvNpsn6ibrsNlvVCGfxsL2BLV0DNZ8NunfCFQQbCwOgAd09yTSJpXa8t1r-FsiEYfTGACynKAp8w2PMckKUCyivbNwNCZkyFZD4ki%2BQR0ArKAq12BCGjKLNCRKMCokjMcNmXbIYLgqICIjFcQFsEBUK3UhCFUGgoAoJ4NzQiMMBwAhGC4SBDBSClOHQVsnnSGAYDoEI2DYYg4EQAB6DS2LeDjREMDTOw0zBcAYOANN%2BcTJIfLgNLoGtKA6CtoD4Z9LIgCSpK4BxiA4LlWzIU8uF2aFuW8jYrQAZkIABGAAmG10BmJRqEoOBlg0FJ0CEEQxBgTBdmGPcOGceUAHIPPQUQYDKjQquBboAEcUggboCoAaxgUhdlQQN4H8DYypfVBKHQWr0BAABfFjepKmAkmgGAKDQLA8CIMgpqAA
### (Only applicable for extension issues) IDE Information
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.