always `True` & always `False` variables are incorrectly treated as if they could be either
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 516
- PR merge metrics
- No merged PRs in 30d
Description
### Describe the Bug
```python
from typing import reveal_type, Final, Literal
asdf: Final = False
reveal_type(asdf) # revealed type: Literal[False]
if asdf:
foo = 1
else:
foo = 2
reveal_type(foo) # revealed type: Literal[1, 2] (wrong)
if False:
bar = 1
else:
bar = 2
reveal_type(bar) # revealed type: Literal[2] (correct)
```
Python: 3.14
### Sandbox Link
https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEALqcROgOZ0Q3G6UN2UYANxiooAfSbEYAGjoAxVmLkAZCAxiUxAHXS7UcTGEQKlUOgF4FYuDF2CRYycxgAKA0YCUdAMQDhorCYjC4mahpaUADa8jYwALq6uhBgdB7GunRZdGC4uJZ0AIy6MFC2iJnZuflWAExJ6A6BztKu1d5%2BTWIwwVIwYeqaYlGFcrXxdK4A7tTsng0p1mX9lVnYqJQFxeil5at065t1DV0Sfa6HHf6OQSHSAxHD45MAxryCLwzz6CAyIGSCMBQUiEBi0KAUMgMAAWuHQAFoRJQ4BA4QVtCAAMyEQoAFgxuiimmoyMSWBgxA%2BqA0wSsGOJvAxdGS3CgEBe6nhqGwcAYWk%2B8JeUAMcHRIAZlAJ6C4xDZHIY8JlvH4dPFlBJTJZsvZ6mB8MwMEgO0wXIYfIg2AArhoxRKpTQIHAUex4XBcJbKC8YLb1YyQLp0HD4TB8NDUJbeRARPCaNSXtCfRr-ehAwrBABHS0QQQmgDWMFIXJeXqdib9ulw0gRlvQxFQL1zrA4qrtIGZjR6NcwGAVLwMKuZaqT7ZzXZ7grhmHUqPQZclbd0NZ2JbQlELb24G0daJbvvn7aXMBXG0LfQn6CRKJ3g9bB479bD2Fgc816Brggf3NgMbj0MFBm9Xdh0XDs3SgIQvxgfUu00LkoHMIC-TvPoTSVPgXwXN831sVC2EDQQMPbCDKAgDAvRjR1YwYeNCOSC8xAgE0DTeLQwSOG89wxEAAF8-nrBgoxgRRYAoNAsDwIgyB4oA
### (Only applicable for extension issues) IDE Information
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.