rust/tests/coverage/if_not.coverage
Zalathar d90fd027c8 coverage: Use SpanMarker to mark the full condition of if !
When MIR is built for an if-not expression, the `!` part of the condition
doesn't correspond to any MIR statement, so coverage instrumentation normally
can't see it.

We can fix that by deliberately injecting a dummy statement whose sole purpose
is to associate that span with its enclosing block.
2023-12-08 22:40:49 +11:00

39 lines
1.0 KiB
Plaintext

LL| |#![feature(coverage_attribute)]
LL| |// edition: 2021
LL| |
LL| 12|fn if_not(cond: bool) {
LL| 12| if
LL| 12| !
LL| 12| cond
LL| 4| {
LL| 4| println!("cond was false");
LL| 8| }
LL| |
LL| | if
LL| 12| !
LL| 12| cond
LL| 4| {
LL| 4| println!("cond was false");
LL| 8| }
LL| |
LL| | if
LL| 12| !
LL| 12| cond
LL| 4| {
LL| 4| println!("cond was false");
LL| 8| } else {
LL| 8| println!("cond was true");
LL| 8| }
LL| 12|}
LL| |
LL| |#[coverage(off)]
LL| |fn main() {
LL| | for _ in 0..8 {
LL| | if_not(std::hint::black_box(true));
LL| | }
LL| | for _ in 0..4 {
LL| | if_not(std::hint::black_box(false));
LL| | }
LL| |}