-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Open
Labels
A-code-coverageArea: Source-based code coverage (-Cinstrument-coverage)Area: Source-based code coverage (-Cinstrument-coverage)C-bugCategory: This is a bug.Category: This is a bug.F-let_elseIssues related to let-else statements (RFC 3137)Issues related to let-else statements (RFC 3137)needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.This issue may need triage. Remove it if it has been sufficiently triaged.
Description
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:
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
Labels
A-code-coverageArea: Source-based code coverage (-Cinstrument-coverage)Area: Source-based code coverage (-Cinstrument-coverage)C-bugCategory: This is a bug.Category: This is a bug.F-let_elseIssues related to let-else statements (RFC 3137)Issues related to let-else statements (RFC 3137)needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.This issue may need triage. Remove it if it has been sufficiently triaged.