diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2024-04-17 12:32:11 +1000 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2024-04-22 21:55:33 +1000 |
| commit | 3de87feba23c6b9df520f284b51390c02ea8d12a (patch) | |
| tree | 395d094e40d7cdb8f9cc50619e537697c917247e /tests/coverage/branch/match-trivial.coverage | |
| parent | 7f432dfb23f264f5c368464f849663a518750a93 (diff) | |
| download | rust-3de87feba23c6b9df520f284b51390c02ea8d12a.tar.gz rust-3de87feba23c6b9df520f284b51390c02ea8d12a.zip | |
coverage: Branch coverage tests for match arms
Diffstat (limited to 'tests/coverage/branch/match-trivial.coverage')
| -rw-r--r-- | tests/coverage/branch/match-trivial.coverage | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/coverage/branch/match-trivial.coverage b/tests/coverage/branch/match-trivial.coverage new file mode 100644 index 00000000000..4ffb172e1b6 --- /dev/null +++ b/tests/coverage/branch/match-trivial.coverage @@ -0,0 +1,49 @@ + LL| |#![feature(coverage_attribute)] + LL| |//@ edition: 2021 + LL| |//@ compile-flags: -Zcoverage-options=branch + LL| |//@ llvm-cov-flags: --show-branches=count + LL| | + LL| |// When instrumenting match expressions for branch coverage, make sure we don't + LL| |// cause an ICE or produce weird coverage output for matches with <2 arms. + LL| | + LL| |// Helper macro to prevent start-of-function spans from being merged into + LL| |// spans on the lines we care about. + LL| |macro_rules! no_merge { + LL| | () => { + LL| | for _ in 0..1 {} + LL| | }; + LL| |} + LL| | + LL| |enum Uninhabited {} + LL| |enum Trivial { + LL| | Value, + LL| |} + LL| | + LL| 0|fn _uninhabited(x: Uninhabited) { + LL| 0| no_merge!(); + LL| | + LL| | match x {} + LL| | + LL| | consume("done"); + LL| |} + LL| | + LL| 1|fn trivial(x: Trivial) { + LL| 1| no_merge!(); + LL| | + LL| 1| match x { + LL| 1| Trivial::Value => consume("trivial"), + LL| 1| } + LL| 1| + LL| 1| consume("done"); + LL| 1|} + LL| | + LL| |#[coverage(off)] + LL| |fn consume<T>(x: T) { + LL| | core::hint::black_box(x); + LL| |} + LL| | + LL| |#[coverage(off)] + LL| |fn main() { + LL| | trivial(Trivial::Value); + LL| |} + |
