diff options
| author | Dorian Péron <peron@adacore.com> | 2024-04-29 15:58:14 +0000 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2024-05-30 15:38:46 +1000 |
| commit | 20174e6638eb0d5ac0195706ce6cc7185949a407 (patch) | |
| tree | 309e15edcf3046433fb272eb9fed8c6dcf1faef0 /tests/coverage/condition/conditions.rs | |
| parent | fa563c138433583ebbd64c963666f6c9ddb53739 (diff) | |
| download | rust-20174e6638eb0d5ac0195706ce6cc7185949a407.tar.gz rust-20174e6638eb0d5ac0195706ce6cc7185949a407.zip | |
coverage: Add a test for `-Zcoverage-options=condition`
Diffstat (limited to 'tests/coverage/condition/conditions.rs')
| -rw-r--r-- | tests/coverage/condition/conditions.rs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/coverage/condition/conditions.rs b/tests/coverage/condition/conditions.rs new file mode 100644 index 00000000000..3d658dc93e0 --- /dev/null +++ b/tests/coverage/condition/conditions.rs @@ -0,0 +1,67 @@ +#![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); +} |
