| #![feature(coverage_attribute)] |
| //@ edition: 2021 |
| //@ compile-flags: -Zcoverage-options=condition |
| //@ llvm-cov-flags: --show-branches=count |
| |
| use core::hint::black_box; |
| |
| fn simple_assign(a: bool) { |
| let x = a; |
| black_box(x); |
| } |
| |
| fn assign_and(a: bool, b: bool) { |
| let x = a && b; |
| black_box(x); |
| } |
| |
| fn assign_or(a: bool, b: bool) { |
| let x = a || b; |
| black_box(x); |
| } |
| |
| fn assign_3_or_and(a: bool, b: bool, c: bool) { |
| let x = a || b && c; |
| black_box(x); |
| } |
| |
| fn assign_3_and_or(a: bool, b: bool, c: bool) { |
| let x = a && b || c; |
| black_box(x); |
| } |
| |
| fn foo(a: bool) -> bool { |
| black_box(a) |
| } |
| |
| fn func_call(a: bool, b: bool) { |
| foo(a && b); |
| } |
| |
| #[coverage(off)] |
| fn main() { |
| simple_assign(true); |
| simple_assign(false); |
| |
| assign_and(true, false); |
| assign_and(true, true); |
| assign_and(false, false); |
| |
| assign_or(true, false); |
| assign_or(true, true); |
| assign_or(false, false); |
| |
| assign_3_or_and(true, false, false); |
| assign_3_or_and(true, true, false); |
| assign_3_or_and(false, false, true); |
| assign_3_or_and(false, true, true); |
| |
| assign_3_and_or(true, false, false); |
| assign_3_and_or(true, true, false); |
| assign_3_and_or(false, false, true); |
| assign_3_and_or(false, true, true); |
| |
| func_call(true, false); |
| func_call(true, true); |
| func_call(false, false); |
| } |