Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[1.15 regression] (Temporary) false positive for reachability with unannotated partial type #18606

Open
hauntsaninja opened this issue Feb 5, 2025 · 1 comment
Assignees
Labels
bug mypy got something wrong

Comments

@hauntsaninja
Copy link
Collaborator

Sort of a weird / minor case, but with mypy 1.15

λ cat e.py
def merge_debugs(debugs: list[int | None]) -> None:
    metadata = None
    for debug in debugs:
        if debug is not None:
            if metadata is None:
                metadata = {}

λ mypy  e.py --warn-unreachable
e.py:6: error: Need type annotation for "metadata" (hint: "metadata: dict[<type>, <type>] = ...")  [var-annotated]
e.py:6: error: Statement is unreachable  [unreachable]
Found 2 errors in 1 file (checked 1 source file)

If you add an annotation to metadata (standalone or with the assignment) the unreachable warning goes away

@hauntsaninja hauntsaninja added the bug mypy got something wrong label Feb 5, 2025
@hauntsaninja hauntsaninja changed the title False positive for reachability with unannotated partial type (Temporary) false positive for reachability with unannotated partial type Feb 5, 2025
@tyralla tyralla self-assigned this Feb 5, 2025
@Garrett-R
Copy link

Another example:

y = None
for i in range(5):
    if y is None:
        print('reachable!')  # Mypy: error: Statement is unreachable
        y = []
    y.append(99)

(playground)

@hauntsaninja hauntsaninja changed the title (Temporary) false positive for reachability with unannotated partial type [1.15 regression] (Temporary) false positive for reachability with unannotated partial type Feb 12, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug mypy got something wrong
Projects
None yet
Development

No branches or pull requests

3 participants