facebook / facebook/pyrefly

Empty container first use inference doesn't work in second branch

Open
#3,397 1 comment 0 reactions 0 assignees View on GitHub
narrowing scoping-control-flow
Dominant language
Rust
Stars
7k
Forks
516
PR merge metrics
No merged PRs in 30d

Description

### Describe the Bug

In a setup like

```
from typing import reveal_type
if input():
x = ["a"]
reveal_type(x)
else:
x = []
reveal_type(x)

reveal_type(x)

y = [] if input() else ["a"]
reveal_type(y)

```

pyright infers the types of both x and y as `list[str]`, while pyrefly ends with `list[str] | list[Unknown]`

[pyright](https://pyright-play.net/?pythonVersion=3.12&locale=en-us&reportUnknownMemberType=true&code=GYJw9gtgBALgngBwJYDsDmUkQWEMogCmAboQIYA2A%2BvAoQLABQSwmKCArjABQCUAXEyjCoADygBeKAG0ARGVkBdISKKlKNRIW6jeTQhQDOhQYxFjJM5WdUly1Wtt1Mma%2B5ro69jJnEvTFTFZUTh5eKANjGXklVzsNR244XiA)
[pyrefly](https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEALqcROgOZ0Q3G6UN0AZCAxiVUUADR1KMAG4xxAfSbEYAHXQahDAIJ0AvIOGjxAbTUhUFgLoaowxZggBjBojpPXp7TqmsG1gZ0wBZWSHQAjAC%2Bdg4MAK7EsO4JSTDewjqBhgAUoRYSAJSxDIr2cG505QwZutl05pY2JYpwMJVtNT71IU0gMej2pWDUAF4w6J3uI7jjk%2B21WUEzc505eX1FxZo7mDBgdOi4iuiolNQA7qxsOQDWMKTuFZSFiBp0H5wH96Sc6FUOTxud6fUEyeRKFQwO4PQofADEdGeINBHyGjhcNR%2BgToiJ0lDY8RoE34AANnqTOHBDrh%2BKg4HAIGxTthYIxcHRiGdUMSRJQ6KSfpSrgwABaMZgwAXaExQUwAclQ8uspJRXzoPz%2BANKqWSarBcgUUGUkphpDhuKRDEoaog3weWvR1Te-1RH3BRpNqjNFsRyNdHztGodrG1rXaLrd7sNkNNP19VptAfVmtD6JWEym%2Bs%2BHtj3vjCMTtvtv1DGfmDHW%2BRAW0jUdzxqhPsL-o0Gj2B1O51wV3YZqe1texeDpf%2BGzCRTrbobXuhBctMrEcsVyuHqf%2BjTC1inqJnTfniMXZhXtmTQfXwWrUR3BohjbjsMLR%2BXStPoPPIf%2BvTC7miN5zMb3vmj4LsYS4Kq%2BNYgPEDDQHAJDkIgICIgAqrBQy-GA8ToK4EC4JMbZYPsdBgLwNCoKU6BEtgog5Pg7j%2BHCAC0AB8iY7jICSUP8YAWAActRojuMA%2BAxCAGhQWQMhgFApCEAwtBQBQiIAAqkNJslIhgOAEHQzj4ZAhJiLB%2BGEBoiIAMowFKooMAwxBwIgAD0TlSfssmELwbBORMTmYLgzhwE5%2BnoIZ8TGXh6BOSRvB0KgsioNAqCslKIVhRF%2BF0LgxAmZMZnoGQYr4Ux8iUIymWGBYADMhARAATBYElRBIli4fIABi0AwBQaBYHgRBkP0QA)

### Sandbox Link

_No response_

### (Only applicable for extension issues) IDE Information

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.