Skip to content

code coverage reporting for let-else interacts poorly with rustfmt #143149

Open
@briansmith

Description

@briansmith

I tried this code:

 let (m_original, []) = slice::as_chunks::<_, 8>(m.limbs()) else {
         return Err(LimbSliceError::len_mismatch(LenMismatchError::new(8)));
}

In my test suite, the positive if case is covered, but the else is never covered.

I expected to see this happen:

Code coverage tools should clearly report that let (m_original, []) = slice::as_chunks::<_, 8>(m.limbs()) is fully covered and should clearly report that the entire else case is not covered.

Instead, this happened:

Code coverage reports that let (m_original, []) = slice::as_chunks::<_, 8>(m.limbs()) else { is partially covered and that the rest of the else is uncovered:

Image

This is really unfortunate as it leads to confusion about whether part of the positive case is uncovered.

Meta

rustc +nightly --version --verbose:

rustc 1.90.0-nightly (706f244db 2025-06-23)
binary: rustc
commit-hash: 706f244db581212cabf2e619e0113d70999b2bbe
commit-date: 2025-06-23
host: aarch64-apple-darwin
release: 1.90.0-nightly
LLVM version: 20.1.7

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-code-coverageArea: Source-based code coverage (-Cinstrument-coverage)C-bugCategory: This is a bug.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions