Skip to content

Commit 4f7a477

Browse files
committed
coverage: Branch coverage test for let-else
1 parent b3e1170 commit 4f7a477

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Function name: let_else::let_else
2+
Raw bytes (38): 0x[01, 01, 02, 05, 09, 09, 02, 06, 01, 0c, 01, 01, 10, 02, 03, 0e, 00, 0f, 05, 00, 13, 00, 18, 09, 01, 09, 01, 0f, 02, 04, 05, 00, 0b, 07, 01, 01, 00, 02]
3+
Number of files: 1
4+
- file 0 => global file 1
5+
Number of expressions: 2
6+
- expression 0 operands: lhs = Counter(1), rhs = Counter(2)
7+
- expression 1 operands: lhs = Counter(2), rhs = Expression(0, Sub)
8+
Number of file 0 mappings: 6
9+
- Code(Counter(0)) at (prev + 12, 1) to (start + 1, 16)
10+
- Code(Expression(0, Sub)) at (prev + 3, 14) to (start + 0, 15)
11+
= (c1 - c2)
12+
- Code(Counter(1)) at (prev + 0, 19) to (start + 0, 24)
13+
- Code(Counter(2)) at (prev + 1, 9) to (start + 1, 15)
14+
- Code(Expression(0, Sub)) at (prev + 4, 5) to (start + 0, 11)
15+
= (c1 - c2)
16+
- Code(Expression(1, Add)) at (prev + 1, 1) to (start + 0, 2)
17+
= (c2 + (c1 - c2))
18+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
LL| |#![feature(coverage_attribute)]
2+
LL| |//@ edition: 2021
3+
LL| |//@ compile-flags: -Zcoverage-options=branch
4+
LL| |//@ llvm-cov-flags: --show-branches=count
5+
LL| |
6+
LL| |macro_rules! no_merge {
7+
LL| | () => {
8+
LL| | for _ in 0..1 {}
9+
LL| | };
10+
LL| |}
11+
LL| |
12+
LL| 3|fn let_else(value: Option<&str>) {
13+
LL| 3| no_merge!();
14+
LL| |
15+
LL| 3| let Some(x) = value else {
16+
^2
17+
LL| 1| say("none");
18+
LL| 1| return;
19+
LL| | };
20+
LL| |
21+
LL| 2| say(x);
22+
LL| 3|}
23+
LL| |
24+
LL| |#[coverage(off)]
25+
LL| |fn say(message: &str) {
26+
LL| | core::hint::black_box(message);
27+
LL| |}
28+
LL| |
29+
LL| |#[coverage(off)]
30+
LL| |fn main() {
31+
LL| | let_else(Some("x"));
32+
LL| | let_else(Some("x"));
33+
LL| | let_else(None);
34+
LL| |}
35+
LL| |
36+
LL| |// FIXME(#124118) Actually instrument let-else for branch coverage.
37+

tests/coverage/branch/let-else.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#![feature(coverage_attribute)]
2+
//@ edition: 2021
3+
//@ compile-flags: -Zcoverage-options=branch
4+
//@ llvm-cov-flags: --show-branches=count
5+
6+
macro_rules! no_merge {
7+
() => {
8+
for _ in 0..1 {}
9+
};
10+
}
11+
12+
fn let_else(value: Option<&str>) {
13+
no_merge!();
14+
15+
let Some(x) = value else {
16+
say("none");
17+
return;
18+
};
19+
20+
say(x);
21+
}
22+
23+
#[coverage(off)]
24+
fn say(message: &str) {
25+
core::hint::black_box(message);
26+
}
27+
28+
#[coverage(off)]
29+
fn main() {
30+
let_else(Some("x"));
31+
let_else(Some("x"));
32+
let_else(None);
33+
}
34+
35+
// FIXME(#124118) Actually instrument let-else for branch coverage.

0 commit comments

Comments
 (0)