about summary refs log tree commit diff
path: root/tests/coverage/partial_eq.coverage
diff options
context:
space:
mode:
Diffstat (limited to 'tests/coverage/partial_eq.coverage')
-rw-r--r--tests/coverage/partial_eq.coverage48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/coverage/partial_eq.coverage b/tests/coverage/partial_eq.coverage
new file mode 100644
index 00000000000..c6d9ad6cf27
--- /dev/null
+++ b/tests/coverage/partial_eq.coverage
@@ -0,0 +1,48 @@
+   LL|       |// This test confirms an earlier problem was resolved, supporting the MIR graph generated by the
+   LL|       |// structure of this test.
+   LL|       |
+   LL|      2|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+                       ^0            ^0      ^0     ^1       ^1 ^0^0
+   LL|       |pub struct Version {
+   LL|       |    major: usize,
+   LL|       |    minor: usize,
+   LL|       |    patch: usize,
+   LL|       |}
+   LL|       |
+   LL|       |impl Version {
+   LL|      2|    pub fn new(major: usize, minor: usize, patch: usize) -> Self {
+   LL|      2|        Self {
+   LL|      2|            major,
+   LL|      2|            minor,
+   LL|      2|            patch,
+   LL|      2|        }
+   LL|      2|    }
+   LL|       |}
+   LL|       |
+   LL|      1|fn main() {
+   LL|      1|    let version_3_2_1 = Version::new(3, 2, 1);
+   LL|      1|    let version_3_3_0 = Version::new(3, 3, 0);
+   LL|      1|
+   LL|      1|    println!("{:?} < {:?} = {}", version_3_2_1, version_3_3_0, version_3_2_1 < version_3_3_0);
+   LL|      1|}
+   LL|       |
+   LL|       |/*
+   LL|       |
+   LL|       |This test verifies a bug was fixed that otherwise generated this error:
+   LL|       |
+   LL|       |thread 'rustc' panicked at 'No counters provided the source_hash for function:
+   LL|       |    Instance {
+   LL|       |        def: Item(WithOptConstParam {
+   LL|       |            did: DefId(0:101 ~ autocfg[c44a]::version::{impl#2}::partial_cmp),
+   LL|       |            const_param_did: None
+   LL|       |        }),
+   LL|       |        args: []
+   LL|       |    }'
+   LL|       |The `PartialOrd` derived by `Version` happened to generate a MIR that generated coverage
+   LL|       |without a code region associated with any `Counter`. Code regions were associated with at least
+   LL|       |one expression, which is allowed, but the `function_source_hash` was only passed to the codegen
+   LL|       |(coverage mapgen) phase from a `Counter`s code region. A new method was added to pass the
+   LL|       |`function_source_hash` without a code region, if necessary.
+   LL|       |
+   LL|       |*/
+