Skip to content

Coverage behavioral changes on #[derive] lines #147434

Description

@reaperhulk

We are seeing changes in coverage behavior in 1.83, 1.84-1.90, and beta/nightly. This code:

use asn1::Asn1Read;

#[derive(Asn1Read)]
struct ThreeIntegers {
    first: u64,
    second: u64,
    third: u64,
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_parse_and_serialize() {
        // This represents SEQUENCE { INTEGER 1, INTEGER 2, INTEGER 3 }
        let der_data = b"\x30\x09\x02\x01\x01\x02\x01\x02\x02\x01\x03";

        // Parse the DER data
        let parsed: ThreeIntegers = asn1::parse_single(der_data)
            .expect("Failed to parse DER data");
        assert_eq!(parsed.first, 1);
        assert_eq!(parsed.second, 2);
        assert_eq!(parsed.third, 3);
    }
}

with this Cargo.toml

[package]
name = "rust-asn1-project"
version = "0.1.0"
edition = "2021"

[dependencies]
asn1 = "0.22.0"

has coverage in 1.83.0 when run with cargo llvm-cov --html (which of course requires llvm-tools-preview).

Image

But in 1.84-1.90 it shows as uncovered.
Image

And in beta and nightly this now doesn't show as a line at all:

Image

Since this has changed multiple times now (covered -> uncovered -> not a line at all) I'm filing this issue to verify that the beta/nightly behavior is expected and won't change again in the future.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-code-coverageArea: Source-based code coverage (-Cinstrument-coverage)C-bugCategory: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions