Coverage tests for remaining TerminatorKinds and async, improve Assert

Tested and validate results for panic unwind, panic abort, assert!()
macro, TerminatorKind::Assert (for example, numeric overflow), and
async/await.

Implemented a previous documented idea to change Assert handling to be
the same as FalseUnwind and Goto, so it doesn't get its own
BasicCoverageBlock anymore. This changed a couple of coverage regions,
but I validated those changes are not any worse than the prior results,
and probably help assure some consistency (even if some people might
disagree with how the code region is consistently computed).

Fixed issue with async/await. AggregateKind::Generator needs to be
handled like AggregateKind::Closure; coverage span for the outer async
function should not "cover" the async body, which is actually executed
in a separate "closure" MIR.
This commit is contained in:
Rich Kadel 2020-11-16 09:14:28 -08:00
parent 1f95c91c88
commit c45ee4bb29
142 changed files with 10107 additions and 872 deletions

View file

@ -116,9 +116,13 @@ impl<
write!(w, r#"<table border="0" cellborder="1" cellspacing="0">"#)?;
// FIXME(richkadel): Need generic way to know if node header should have a different color
// FIXME(richkadel): If/when migrating the MIR graphviz to this generic implementation,
// we need generic way to know if node header should have a different color. For example,
// for MIR:
//
// let (blk, bgcolor) = if data.is_cleanup {
// (format!("{:?} (cleanup)", node), "lightblue")
// let color = if dark_mode { "royalblue" } else { "lightblue" };
// (format!("{:?} (cleanup)", node), color)
// } else {
// let color = if dark_mode { "dimgray" } else { "gray" };
// (format!("{:?}", node), color)

View file

@ -1,8 +1,6 @@
# `source-based-code-coverage`
The feature request for this feature is: [#34701]
The Major Change Proposal (MCP) for this feature is: [#278](https://github.com/rust-lang/compiler-team/issues/278)
The tracking issue for this feature is: [#79121](https://github.com/rust-lang/rust/issues/79121).
------------------------

View file

@ -54,6 +54,9 @@ endif
%: $(SOURCEDIR)/%.rs
# Compile the test program with coverage instrumentation and generate relevant MIR.
$(RUSTC) $(SOURCEDIR)/$@.rs \
$$( grep -q '^\/\/ require-rust-edition-2018' $(SOURCEDIR)/$@.rs && \
echo "--edition=2018" \
) \
-Zinstrument-coverage \
-Clink-dead-code=$(LINK_DEAD_CODE)

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/abort.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 15,
"covered": 13,
"percent": 86.66666666666667
},
"regions": {
"count": 10,
"covered": 9,
"notcovered": 1,
"percent": 90
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 15,
"covered": 13,
"percent": 86.66666666666667
},
"regions": {
"count": 10,
"covered": 9,
"notcovered": 1,
"percent": 90
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/assert.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 13,
"covered": 10,
"percent": 76.92307692307693
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 13,
"covered": 10,
"percent": 76.92307692307693
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/async.rs",
"summary": {
"functions": {
"count": 9,
"covered": 9,
"percent": 100
},
"instantiations": {
"count": 9,
"covered": 9,
"percent": 100
},
"lines": {
"count": 31,
"covered": 30,
"percent": 96.7741935483871
},
"regions": {
"count": 21,
"covered": 18,
"notcovered": 3,
"percent": 85.71428571428571
}
}
}
],
"totals": {
"functions": {
"count": 9,
"covered": 9,
"percent": 100
},
"instantiations": {
"count": 9,
"covered": 9,
"percent": 100
},
"lines": {
"count": 31,
"covered": 30,
"percent": 96.7741935483871
},
"regions": {
"count": 21,
"covered": 18,
"notcovered": 3,
"percent": 85.71428571428571
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -16,15 +16,15 @@
"percent": 100
},
"lines": {
"count": 49,
"covered": 23,
"percent": 46.93877551020408
"count": 64,
"covered": 33,
"percent": 51.5625
},
"regions": {
"count": 69,
"covered": 18,
"notcovered": 51,
"percent": 26.08695652173913
"count": 88,
"covered": 25,
"notcovered": 63,
"percent": 28.40909090909091
}
}
}
@ -41,15 +41,15 @@
"percent": 100
},
"lines": {
"count": 49,
"covered": 23,
"percent": 46.93877551020408
"count": 64,
"covered": 33,
"percent": 51.5625
},
"regions": {
"count": 69,
"covered": 18,
"notcovered": 51,
"percent": 26.08695652173913
"count": 88,
"covered": 25,
"notcovered": 63,
"percent": 28.40909090909091
}
}
}

View file

@ -16,15 +16,15 @@
"percent": 100
},
"lines": {
"count": 26,
"covered": 26,
"count": 27,
"covered": 27,
"percent": 100
},
"regions": {
"count": 15,
"covered": 13,
"count": 11,
"covered": 9,
"notcovered": 2,
"percent": 86.66666666666667
"percent": 81.81818181818183
}
}
}
@ -41,15 +41,15 @@
"percent": 100
},
"lines": {
"count": 26,
"covered": 26,
"count": 27,
"covered": 27,
"percent": 100
},
"regions": {
"count": 15,
"covered": 13,
"count": 11,
"covered": 9,
"notcovered": 2,
"percent": 86.66666666666667
"percent": 81.81818181818183
}
}
}

View file

@ -16,15 +16,15 @@
"percent": 100
},
"lines": {
"count": 21,
"count": 22,
"covered": 16,
"percent": 76.19047619047619
"percent": 72.72727272727273
},
"regions": {
"count": 18,
"covered": 14,
"count": 17,
"covered": 13,
"notcovered": 4,
"percent": 77.77777777777779
"percent": 76.47058823529412
}
}
}
@ -41,15 +41,15 @@
"percent": 100
},
"lines": {
"count": 21,
"count": 22,
"covered": 16,
"percent": 76.19047619047619
"percent": 72.72727272727273
},
"regions": {
"count": 18,
"covered": 14,
"count": 17,
"covered": 13,
"notcovered": 4,
"percent": 77.77777777777779
"percent": 76.47058823529412
}
}
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/overflow.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 21,
"covered": 17,
"percent": 80.95238095238095
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 21,
"covered": 17,
"percent": 80.95238095238095
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/panic_unwind.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 17,
"covered": 14,
"percent": 82.35294117647058
},
"regions": {
"count": 13,
"covered": 11,
"notcovered": 2,
"percent": 84.61538461538461
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 17,
"covered": 14,
"percent": 82.35294117647058
},
"regions": {
"count": 13,
"covered": 11,
"notcovered": 2,
"percent": 84.61538461538461
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/yield.rs",
"summary": {
"functions": {
"count": 3,
"covered": 3,
"percent": 100
},
"instantiations": {
"count": 3,
"covered": 3,
"percent": 100
},
"lines": {
"count": 23,
"covered": 16,
"percent": 69.56521739130434
},
"regions": {
"count": 22,
"covered": 16,
"notcovered": 6,
"percent": 72.72727272727273
}
}
}
],
"totals": {
"functions": {
"count": 3,
"covered": 3,
"percent": 100
},
"instantiations": {
"count": 3,
"covered": 3,
"percent": 100
},
"lines": {
"count": 23,
"covered": 16,
"percent": 69.56521739130434
},
"regions": {
"count": 22,
"covered": 16,
"notcovered": 6,
"percent": 72.72727272727273
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,35 @@
1| |#![feature(unwind_attributes)]
2| |#![allow(unused_assignments)]
3| |
4| |#[unwind(aborts)]
5| |fn might_abort(should_abort: bool) {
6| 4| if should_abort {
7| 0| println!("aborting...");
8| 0| panic!("panics and aborts");
9| 4| } else {
10| 4| println!("Don't Panic");
11| 4| }
12| 4|}
13| |
14| |fn main() -> Result<(),u8> {
15| 1| let mut countdown = 10;
16| 11| while countdown > 0 {
17| 10| if countdown < 5 {
18| 4| might_abort(false);
19| 6| }
20| 10| countdown -= 1;
21| | }
22| 1| Ok(())
23| 1|}
24| |
25| |// Notes:
26| |// 1. Compare this program and its coverage results to those of the similar tests
27| |// `panic_unwind.rs` and `try_error_result.rs`.
28| |// 2. This test confirms the coverage generated when a program includes `TerminatorKind::Abort`.
29| |// 3. The test does not invoke the abort. By executing to a successful completion, the coverage
30| |// results show where the program did and did not execute.
31| |// 4. If the program actually aborted, the coverage counters would not be saved (which "works as
32| |// intended"). Coverage results would show no executed coverage regions.
33| |// 6. If `should_abort` is `true` and the program aborts, the program exits with a `132` status
34| |// (on Linux at least).

View file

@ -0,0 +1,34 @@
1| |#![allow(unused_assignments)]
2| |// expect-exit-status-101
3| |
4| |fn might_fail_assert(one_plus_one: u32) {
5| 4| println!("does 1 + 1 = {}?", one_plus_one);
6| 4| assert_eq!(1 + 1, one_plus_one, "the argument was wrong");
^1
7| 3|}
8| |
9| |fn main() -> Result<(),u8> {
10| 1| let mut countdown = 10;
11| 10| while countdown > 0 {
12| 10| if countdown == 1 {
13| 0| might_fail_assert(3);
14| 10| } else if countdown < 5 {
15| 3| might_fail_assert(2);
16| 15| }
17| 9| countdown -= 1;
18| | }
19| 0| Ok(())
20| 0|}
21| |
22| |// Notes:
23| |// 1. Compare this program and its coverage results to those of the very similar test
24| |// `panic_unwind.rs`, and similar tests `abort.rs` and `try_error_result.rs`.
25| |// 2. This test confirms the coverage generated when a program passes or fails an `assert!()` or
26| |// related `assert_*!()` macro.
27| |// 3. Notably, the `assert` macros *do not* generate `TerminatorKind::Assert`. The macros produce
28| |// conditional expressions, `TerminatorKind::SwitchInt` branches, and a possible call to
29| |// `begin_panic_fmt()` (that begins a panic unwind, if the assertion test fails).
30| |// 4. `TerminatoKind::Assert` is, however, also present in the MIR generated for this test
31| |// (and in many other coverage tests). The `Assert` terminator is typically generated by the
32| |// Rust compiler to check for runtime failures, such as numeric overflows.

View file

@ -0,0 +1,66 @@
1| |#![allow(unused_assignments)]
2| |
3| |// require-rust-edition-2018
4| |
5| 1|async fn f() -> u8 { 1 }
6| |
7| |async fn foo() -> [bool; 10] { [false; 10] }
8| |
9| |pub async fn g(x: u8) {
10| | match x {
11| | y if f().await == y => (),
12| | _ => (),
13| | }
14| 1|}
15| |
16| |// #78366: check the reference to the binding is recorded even if the binding is not autorefed
17| |
18| |async fn h(x: usize) {
19| | match x {
20| | y if foo().await[y] => (),
21| | _ => (),
22| | }
23| 1|}
24| |
25| 1|async fn i(x: u8) {
26| 1| match x {
27| 1| y if f().await == y + 1 => (),
^0 ^0
28| 1| _ => (),
29| | }
30| 2|}
31| |
32| 1|fn main() {
33| 1| let _ = g(10);
34| 1| let _ = h(9);
35| 1| let mut future = Box::pin(i(8));
36| 1| executor::block_on(future.as_mut());
37| 1|}
38| |
39| |mod executor {
40| | use core::{
41| | future::Future,
42| | pin::Pin,
43| | task::{Context, Poll, RawWaker, RawWakerVTable, Waker},
44| | };
45| |
46| | pub fn block_on<F: Future>(mut future: F) -> F::Output {
47| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) };
48| 1|
49| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new(
50| 1| |_| unimplemented!("clone"),
51| 1| |_| unimplemented!("wake"),
52| 1| |_| unimplemented!("wake_by_ref"),
53| 1| |_| (),
54| 1| );
55| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) };
56| 1| let mut context = Context::from_waker(&waker);
57| |
58| | loop {
59| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
60| 1| break val;
61| | }
62| 0| }
63| 1| }
64| |}

View file

@ -27,7 +27,8 @@
27| |
28| 1| if countdown > 7 {
29| 1| countdown -= 4;
30| 0| } else if countdown > 2 {
30| 1| } else if countdown > 2 {
^0
31| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
32| 0| countdown = 0;
33| 0| }
@ -36,34 +37,70 @@
36| 0| return;
37| | }
38| |
39| 1| let mut countdown = 0;
40| 1| if true {
41| 1| countdown = 1;
42| 1| }
43| |
44| 1| let z = if countdown > 7 {
^0
45| 0| countdown -= 4;
46| 1| } else if countdown > 2 {
47| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
48| 0| countdown = 0;
49| 0| }
50| 0| countdown -= 5;
51| | } else {
52| 1| let should_be_reachable = countdown;
53| 1| println!("reached");
54| 1| return;
55| | };
39| 1| if true {
40| | // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no
41| | // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region,
42| | // for the executed `then` block above, to include the closing brace on line 30. That
43| | // changed the line count, but the coverage code region (for the `else if` condition) is
44| | // still valid.
45| | //
46| | // Note that `if` (then) and `else` blocks include the closing brace in their coverage
47| | // code regions when the last line in the block ends in a semicolon, because the Rust
48| | // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the
49| | // empty value for the executed block. When the last line does not end in a semicolon
50| | // (that is, when the block actually results in a value), the additional `Assign` is not
51| | // generated, and the brace is not included.
52| 1| let mut countdown = 0;
53| 1| if true {
54| 1| countdown = 10;
55| 1| }
56| |
57| 0| let w = if countdown > 7 {
58| 0| countdown -= 4;
59| 0| } else if countdown > 2 {
60| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
61| 0| countdown = 0;
62| 0| }
63| 0| countdown -= 5;
64| | } else {
65| 0| return;
66| | };
67| 1|}
57| 1| if countdown > 7 {
58| 1| countdown -= 4;
59| 1| }
60| | // The closing brace of the `then` branch is now included in the coverage region, and shown
61| | // as "executed" (giving its line a count of 1 here). Since, in the original version above,
62| | // the closing brace shares the same line as the `else if` conditional expression (which is
63| | // not executed if the first `then` condition is true), only the condition's code region is
64| | // marked with a count of 0 now.
65| 0| else if countdown > 2 {
66| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
67| 0| countdown = 0;
68| 0| }
69| 0| countdown -= 5;
70| | } else {
71| 0| return;
72| | }
73| 1| }
74| |
75| 1| let mut countdown = 0;
76| 1| if true {
77| 1| countdown = 1;
78| 1| }
79| |
80| 1| let z = if countdown > 7 {
^0
81| 0| countdown -= 4;
82| 1| } else if countdown > 2 {
83| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
84| 0| countdown = 0;
85| 0| }
86| 0| countdown -= 5;
87| | } else {
88| 1| let should_be_reachable = countdown;
89| 1| println!("reached");
90| 1| return;
91| | };
92| |
93| 0| let w = if countdown > 7 {
94| 0| countdown -= 4;
95| 0| } else if countdown > 2 {
96| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
97| 0| countdown = 0;
98| 0| }
99| 0| countdown -= 5;
100| | } else {
101| 0| return;
102| | };
103| 1|}

View file

@ -38,7 +38,7 @@
37| | }
38| |
39| | impl InTrait for InStruct {
40| | fn trait_func(&mut self, incr: u32) {
40| 1| fn trait_func(&mut self, incr: u32) {
41| 1| self.in_struct_field += incr;
42| 1| in_func(self.in_struct_field);
43| 1| }

View file

@ -15,7 +15,7 @@
15| 1| a -= 10;
16| 1| if is_true {
17| 1| break 'outer;
18| | } else {
18| 0| } else {
19| 0| a -= 2;
20| 0| }
21| 2| }

View file

@ -0,0 +1,64 @@
1| |#![allow(unused_assignments)]
2| |// expect-exit-status-101
3| |
4| |fn might_overflow(to_add: u32) -> u32 {
5| 4| if to_add > 5 {
6| 1| println!("this will probably overflow");
7| 3| }
8| 4| let add_to = u32::MAX - 5;
9| 4| println!("does {} + {} overflow?", add_to, to_add);
10| 4| let result = to_add + add_to;
11| 4| println!("continuing after overflow check");
12| 4| result
13| 4|}
14| |
15| |fn main() -> Result<(),u8> {
16| 1| let mut countdown = 10;
17| 10| while countdown > 0 {
18| 10| if countdown == 1 {
19| 0| let result = might_overflow(10);
20| 0| println!("Result: {}", result);
21| 10| } else if countdown < 5 {
22| 3| let result = might_overflow(1);
23| 3| println!("Result: {}", result);
24| 15| }
25| 9| countdown -= 1;
26| | }
27| 0| Ok(())
28| 0|}
29| |
30| |// Notes:
31| |// 1. Compare this program and its coverage results to those of the very similar test `assert.rs`,
32| |// and similar tests `panic_unwind.rs`, abort.rs` and `try_error_result.rs`.
33| |// 2. This test confirms the coverage generated when a program passes or fails a
34| |// compiler-generated `TerminatorKind::Assert` (based on an overflow check, in this case).
35| |// 3. Similar to how the coverage instrumentation handles `TerminatorKind::Call`,
36| |// compiler-generated assertion failures are assumed to be a symptom of a program bug, not
37| |// expected behavior. To simplify the coverage graphs and keep instrumented programs as
38| |// small and fast as possible, `Assert` terminators are assumed to always succeed, and
39| |// therefore are considered "non-branching" terminators. So, an `Assert` terminator does not
40| |// get its own coverage counter.
41| |// 4. After an unhandled panic or failed Assert, coverage results may not always be intuitive.
42| |// In this test, the final count for the statements after the `if` block in `might_overflow()`
43| |// is 4, even though the lines after `to_add + add_to` were executed only 3 times. Depending
44| |// on the MIR graph and the structure of the code, this count could have been 3 (which might
45| |// have been valid for the overflowed add `+`, but should have been 4 for the lines before
46| |// the overflow. The reason for this potential uncertainty is, a `CounterKind` is incremented
47| |// via StatementKind::Counter at the end of the block, but (as in the case in this test),
48| |// a CounterKind::Expression is always evaluated. In this case, the expression was based on
49| |// a `Counter` incremented as part of the evaluation of the `if` expression, which was
50| |// executed, and counted, 4 times, before reaching the overflow add.
51| |
52| |// If the program did not overflow, the coverage for `might_overflow()` would look like this:
53| |//
54| |// 4| |fn might_overflow(to_add: u32) -> u32 {
55| |// 5| 4| if to_add > 5 {
56| |// 6| 0| println!("this will probably overflow");
57| |// 7| 4| }
58| |// 8| 4| let add_to = u32::MAX - 5;
59| |// 9| 4| println!("does {} + {} overflow?", add_to, to_add);
60| |// 10| 4| let result = to_add + add_to;
61| |// 11| 4| println!("continuing after overflow check");
62| |// 12| 4| result
63| |// 13| 4|}

View file

@ -0,0 +1,50 @@
1| |#![allow(unused_assignments)]
2| |// expect-exit-status-101
3| |
4| |fn might_panic(should_panic: bool) {
5| 4| if should_panic {
6| 1| println!("panicking...");
7| 1| panic!("panics");
8| 3| } else {
9| 3| println!("Don't Panic");
10| 3| }
11| 3|}
12| |
13| |fn main() -> Result<(),u8> {
14| 1| let mut countdown = 10;
15| 10| while countdown > 0 {
16| 10| if countdown == 1 {
17| 0| might_panic(true);
18| 10| } else if countdown < 5 {
19| 3| might_panic(false);
20| 15| }
21| 9| countdown -= 1;
22| | }
23| 0| Ok(())
24| 0|}
25| |
26| |// Notes:
27| |// 1. Compare this program and its coverage results to those of the similar tests `abort.rs` and
28| |// `try_error_result.rs`.
29| |// 2. Since the `panic_unwind.rs` test is allowed to unwind, it is also allowed to execute the
30| |// normal program exit cleanup, including writing out the current values of the coverage
31| |// counters.
32| |// 3. The coverage results show (interestingly) that the `panic!()` call did execute, but it does
33| |// not show coverage of the `if countdown == 1` branch in `main()` that calls
34| |// `might_panic(true)` (causing the call to `panic!()`).
35| |// 4. The reason `main()`s `if countdown == 1` branch, calling `might_panic(true)`, appears
36| |// "uncovered" is, InstrumentCoverage (intentionally) treats `TerminatorKind::Call` terminators
37| |// as non-branching, because when a program executes normally, they always are. Errors handled
38| |// via the try `?` operator produce error handling branches that *are* treated as branches in
39| |// coverage results. By treating calls without try `?` operators as non-branching (assumed to
40| |// return normally and continue) the coverage graph can be simplified, producing smaller,
41| |// faster binaries, and cleaner coverage results.
42| |// 5. The reason the coverage results actually show `panic!()` was called is most likely because
43| |// `panic!()` is a macro, not a simple function call, and there are other `Statement`s and/or
44| |// `Terminator`s that execute with a coverage counter before the panic and unwind occur.
45| |// 6. By best practice, programs should not panic. By design, the coverage implementation will not
46| |// incur additional cost (in program size and execution time) to improve coverage results for
47| |// an event that is not supposted to happen.
48| |// 7. FIXME(#78544): This issue describes a feature request for a proposed option to enable
49| |// more accurate coverage results for tests that intentionally panic.

View file

@ -0,0 +1,38 @@
1| |#![feature(generators, generator_trait)]
2| |#![allow(unused_assignments)]
3| |
4| |use std::ops::{Generator, GeneratorState};
5| |use std::pin::Pin;
6| |
7| |fn main() {
8| 1| let mut generator = || {
9| 1| yield 1;
10| 1| return "foo"
11| 1| };
12| |
13| 1| match Pin::new(&mut generator).resume(()) {
14| 1| GeneratorState::Yielded(1) => {}
15| 0| _ => panic!("unexpected value from resume"),
16| | }
17| 1| match Pin::new(&mut generator).resume(()) {
18| 1| GeneratorState::Complete("foo") => {}
19| 0| _ => panic!("unexpected value from resume"),
20| | }
21| |
22| 1| let mut generator = || {
23| 1| yield 1;
24| 1| yield 2;
25| 0| yield 3;
26| 0| return "foo"
27| 0| };
28| |
29| 1| match Pin::new(&mut generator).resume(()) {
30| 1| GeneratorState::Yielded(1) => {}
31| 0| _ => panic!("unexpected value from resume"),
32| | }
33| 1| match Pin::new(&mut generator).resume(()) {
34| 1| GeneratorState::Yielded(2) => {}
35| 0| _ => panic!("unexpected value from resume"),
36| | }
37| 1|}

View file

@ -0,0 +1,41 @@
Counter in file 0 15:9 -> 15:27, #1
Counter in file 0 16:11 -> 16:24, (#1 + (#2 + #3))
Counter in file 0 17:12 -> 17:25, ((#1 + (#2 + #3)) - #4)
Counter in file 0 17:26 -> 19:10, #2
Counter in file 0 19:10 -> 19:11, #3
Counter in file 0 20:9 -> 20:23, (#2 + #3)
Counter in file 0 22:5 -> 23:2, #4
Counter in file 0 6:8 -> 6:20, #1
Counter in file 0 7:9 -> 8:37, #2
Counter in file 0 9:12 -> 12:2, (#1 - #2)
Emitting segments for file: ../coverage/abort.rs
Combined regions:
6:8 -> 6:20 (count=4)
7:9 -> 8:37 (count=0)
9:12 -> 12:2 (count=4)
15:9 -> 15:27 (count=1)
16:11 -> 16:24 (count=11)
17:12 -> 17:25 (count=10)
17:26 -> 19:10 (count=4)
19:10 -> 19:11 (count=6)
20:9 -> 20:23 (count=10)
22:5 -> 23:2 (count=1)
Segment at 6:8 (count = 4), RegionEntry
Segment at 6:20 (count = 0), Skipped
Segment at 7:9 (count = 0), RegionEntry
Segment at 8:37 (count = 0), Skipped
Segment at 9:12 (count = 4), RegionEntry
Segment at 12:2 (count = 0), Skipped
Segment at 15:9 (count = 1), RegionEntry
Segment at 15:27 (count = 0), Skipped
Segment at 16:11 (count = 11), RegionEntry
Segment at 16:24 (count = 0), Skipped
Segment at 17:12 (count = 10), RegionEntry
Segment at 17:25 (count = 0), Skipped
Segment at 17:26 (count = 4), RegionEntry
Segment at 19:10 (count = 6), RegionEntry
Segment at 19:11 (count = 0), Skipped
Segment at 20:9 (count = 10), RegionEntry
Segment at 20:23 (count = 0), Skipped
Segment at 22:5 (count = 1), RegionEntry
Segment at 23:2 (count = 0), Skipped

View file

@ -0,0 +1,54 @@
Counter in file 0 10:9 -> 10:27, #1
Counter in file 0 11:11 -> 11:24, (#1 + (#2 + (#3 + #4)))
Counter in file 0 12:12 -> 12:26, ((#1 + (#2 + (#3 + #4))) - #5)
Counter in file 0 12:27 -> 14:10, #2
Counter in file 0 14:19 -> 14:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
Counter in file 0 14:33 -> 16:10, #3
Counter in file 0 16:10 -> 16:11, #4
Counter in file 0 16:10 -> 16:11, (#3 + #4)
Counter in file 0 17:9 -> 17:23, (#2 + (#3 + #4))
Counter in file 0 19:5 -> 20:2, #5
Counter in file 0 5:5 -> 5:48, #1
Counter in file 0 6:16 -> 6:21, (#1 + 0)
Counter in file 0 6:37 -> 6:61, #2
Counter in file 0 7:1 -> 7:2, (#1 - #2)
Emitting segments for file: ../coverage/assert.rs
Combined regions:
5:5 -> 5:48 (count=4)
6:16 -> 6:21 (count=4)
6:37 -> 6:61 (count=1)
7:1 -> 7:2 (count=3)
10:9 -> 10:27 (count=1)
11:11 -> 11:24 (count=10)
12:12 -> 12:26 (count=10)
12:27 -> 14:10 (count=0)
14:19 -> 14:32 (count=10)
14:33 -> 16:10 (count=3)
16:10 -> 16:11 (count=15)
17:9 -> 17:23 (count=9)
19:5 -> 20:2 (count=0)
Segment at 5:5 (count = 4), RegionEntry
Segment at 5:48 (count = 0), Skipped
Segment at 6:16 (count = 4), RegionEntry
Segment at 6:21 (count = 0), Skipped
Segment at 6:37 (count = 1), RegionEntry
Segment at 6:61 (count = 0), Skipped
Segment at 7:1 (count = 3), RegionEntry
Segment at 7:2 (count = 0), Skipped
Segment at 10:9 (count = 1), RegionEntry
Segment at 10:27 (count = 0), Skipped
Segment at 11:11 (count = 10), RegionEntry
Segment at 11:24 (count = 0), Skipped
Segment at 12:12 (count = 10), RegionEntry
Segment at 12:26 (count = 0), Skipped
Segment at 12:27 (count = 0), RegionEntry
Segment at 14:10 (count = 0), Skipped
Segment at 14:19 (count = 10), RegionEntry
Segment at 14:32 (count = 0), Skipped
Segment at 14:33 (count = 3), RegionEntry
Segment at 16:10 (count = 15), RegionEntry
Segment at 16:11 (count = 0), Skipped
Segment at 17:9 (count = 9), RegionEntry
Segment at 17:23 (count = 0), Skipped
Segment at 19:5 (count = 0), RegionEntry
Segment at 20:2 (count = 0), Skipped

View file

@ -0,0 +1,84 @@
Counter in file 0 15:9 -> 15:75, #1
Counter in file 0 15:9 -> 15:75, #1
Counter in file 0 15:9 -> 15:75, #1
Counter in file 0 47:13 -> 56:54, #1
Counter in file 0 59:32 -> 59:35, ((#1 + #2) - #2)
Counter in file 0 59:39 -> 59:73, (#1 + #2)
Counter in file 0 60:23 -> 60:26, (((#1 + #2) - #2) + 0)
Counter in file 0 62:10 -> 62:11, #2
Counter in file 0 63:5 -> 63:6, (((#1 + #2) - #2) + 0)
Counter in file 0 53:17 -> 53:19, #1
Counter in file 0 30:1 -> 30:2, #1
Counter in file 0 5:24 -> 5:25, #1
Counter in file 0 14:1 -> 14:2, #1
Counter in file 0 5:22 -> 5:25, #1
Counter in file 0 25:19 -> 26:12, #1
Counter in file 0 27:9 -> 27:10, #3
Counter in file 0 27:14 -> 27:17, (#1 + 0)
Counter in file 0 27:27 -> 27:32, #2
Counter in file 0 27:32 -> 27:33, (#2 - #3)
Counter in file 0 27:36 -> 27:38, (#3 + 0)
Counter in file 0 28:14 -> 28:16, #4
Counter in file 0 30:1 -> 30:2, (#3 + #4)
Counter in file 0 23:1 -> 23:2, #1
Counter in file 0 32:11 -> 37:2, #1
Emitting segments for file: ../coverage/async.rs
Combined regions:
5:22 -> 5:25 (count=1)
5:24 -> 5:25 (count=1)
14:1 -> 14:2 (count=1)
23:1 -> 23:2 (count=1)
25:19 -> 26:12 (count=1)
27:9 -> 27:10 (count=0)
27:14 -> 27:17 (count=1)
27:27 -> 27:32 (count=1)
27:32 -> 27:33 (count=1)
27:36 -> 27:38 (count=0)
28:14 -> 28:16 (count=1)
30:1 -> 30:2 (count=2)
32:11 -> 37:2 (count=1)
47:13 -> 56:54 (count=1)
53:17 -> 53:19 (count=1)
59:32 -> 59:35 (count=1)
59:39 -> 59:73 (count=1)
60:23 -> 60:26 (count=1)
62:10 -> 62:11 (count=0)
63:5 -> 63:6 (count=1)
Segment at 5:22 (count = 1), RegionEntry
Segment at 5:24 (count = 1), RegionEntry
Segment at 5:25 (count = 0), Skipped
Segment at 14:1 (count = 1), RegionEntry
Segment at 14:2 (count = 0), Skipped
Segment at 23:1 (count = 1), RegionEntry
Segment at 23:2 (count = 0), Skipped
Segment at 25:19 (count = 1), RegionEntry
Segment at 26:12 (count = 0), Skipped
Segment at 27:9 (count = 0), RegionEntry
Segment at 27:10 (count = 0), Skipped
Segment at 27:14 (count = 1), RegionEntry
Segment at 27:17 (count = 0), Skipped
Segment at 27:27 (count = 1), RegionEntry
Segment at 27:32 (count = 1), RegionEntry
Segment at 27:33 (count = 0), Skipped
Segment at 27:36 (count = 0), RegionEntry
Segment at 27:38 (count = 0), Skipped
Segment at 28:14 (count = 1), RegionEntry
Segment at 28:16 (count = 0), Skipped
Segment at 30:1 (count = 2), RegionEntry
Segment at 30:2 (count = 0), Skipped
Segment at 32:11 (count = 1), RegionEntry
Segment at 37:2 (count = 0), Skipped
Segment at 47:13 (count = 1), RegionEntry
Segment at 53:17 (count = 1), RegionEntry
Segment at 53:19 (count = 1)
Segment at 56:54 (count = 0), Skipped
Segment at 59:32 (count = 1), RegionEntry
Segment at 59:35 (count = 0), Skipped
Segment at 59:39 (count = 1), RegionEntry
Segment at 59:73 (count = 0), Skipped
Segment at 60:23 (count = 1), RegionEntry
Segment at 60:26 (count = 0), Skipped
Segment at 62:10 (count = 0), RegionEntry
Segment at 62:11 (count = 0), Skipped
Segment at 63:5 (count = 1), RegionEntry
Segment at 63:6 (count = 0), Skipped

View file

@ -1,72 +1,91 @@
Counter in file 0 4:9 -> 4:26, #1
Counter in file 0 5:8 -> 5:12, (#1 + 0)
Counter in file 0 5:13 -> 7:6, #2
Counter in file 0 10:9 -> 10:10, (#4 + #11)
Counter in file 0 10:9 -> 10:10, (#3 + (#12 + #13))
Counter in file 0 10:16 -> 10:29, (#2 + 0)
Counter in file 0 11:9 -> 12:10, #4
Counter in file 0 11:9 -> 12:10, #3
Counter in file 0 13:15 -> 13:28, ((#2 + 0) - #3)
Counter in file 0 14:12 -> 14:25, #5
Counter in file 0 14:29 -> 14:42, (#5 - #13)
Counter in file 0 14:42 -> 14:43, (#13 + #14)
Counter in file 0 14:42 -> 14:43, ((#5 - #13) - #14)
Counter in file 0 14:46 -> 14:60, #21
Counter in file 0 14:60 -> 14:61, (#17 + #18)
Counter in file 0 14:60 -> 14:61, (#21 - #18)
Counter in file 0 14:61 -> 16:10, #22
Counter in file 0 16:10 -> 16:11, #23
Counter in file 0 17:9 -> 18:18, #11
Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #5)
Counter in file 0 23:9 -> 23:26, ((#4 + #11) + 0)
Counter in file 0 24:8 -> 24:12, ((#4 + #11) + 0)
Counter in file 0 24:13 -> 26:6, #12
Counter in file 0 28:8 -> 28:21, (#12 + 0)
Counter in file 0 29:9 -> 29:23, #16
Counter in file 0 30:15 -> 30:28, ((#12 + 0) - #15)
Counter in file 0 31:12 -> 31:25, (((#12 + 0) - #15) - #8)
Counter in file 0 31:29 -> 31:42, ((((#12 + 0) - #15) - #8) - #24)
Counter in file 0 31:42 -> 31:43, (((((#12 + 0) - #15) - #8) - #24) - #25)
Counter in file 0 14:12 -> 14:25, #4
Counter in file 0 14:29 -> 14:42, (#4 - #15)
Counter in file 0 14:42 -> 14:43, ((#4 - #15) - #16)
Counter in file 0 14:42 -> 14:43, (#15 + #16)
Counter in file 0 14:46 -> 14:60, #23
Counter in file 0 14:60 -> 14:61, (#18 + #19)
Counter in file 0 14:60 -> 14:61, (#23 - #19)
Counter in file 0 14:61 -> 16:10, #12
Counter in file 0 16:10 -> 16:11, #13
Counter in file 0 17:9 -> 18:18, (#12 + #13)
Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #4)
Counter in file 0 23:9 -> 23:26, ((#3 + (#12 + #13)) + 0)
Counter in file 0 24:8 -> 24:12, ((#3 + (#12 + #13)) + 0)
Counter in file 0 24:13 -> 26:6, #14
Counter in file 0 28:8 -> 28:21, (#14 + 0)
Counter in file 0 28:22 -> 30:6, #17
Counter in file 0 30:15 -> 30:28, ((#14 + 0) - #17)
Counter in file 0 31:12 -> 31:25, (((#14 + 0) - #17) - #8)
Counter in file 0 31:29 -> 31:42, ((((#14 + 0) - #17) - #8) - #24)
Counter in file 0 31:42 -> 31:43, (((((#14 + 0) - #17) - #8) - #24) - #25)
Counter in file 0 31:42 -> 31:43, (#24 + #25)
Counter in file 0 31:46 -> 31:60, #32
Counter in file 0 31:60 -> 31:61, (#28 + #29)
Counter in file 0 31:60 -> 31:61, (#32 - #29)
Counter in file 0 31:61 -> 33:10, #33
Counter in file 0 33:10 -> 33:11, #34
Counter in file 0 34:9 -> 34:23, #19
Counter in file 0 31:46 -> 31:60, #34
Counter in file 0 31:60 -> 31:61, (#34 - #32)
Counter in file 0 31:60 -> 31:61, (#31 + #32)
Counter in file 0 31:61 -> 33:10, #20
Counter in file 0 33:10 -> 33:11, #21
Counter in file 0 34:9 -> 34:23, (#20 + #21)
Counter in file 0 36:9 -> 36:15, #8
Counter in file 0 39:9 -> 39:26, (#16 + #19)
Counter in file 0 40:8 -> 40:12, ((#16 + #19) + 0)
Counter in file 0 40:13 -> 42:6, #20
Counter in file 0 44:9 -> 44:10, (#27 + #30)
Counter in file 0 44:16 -> 44:29, (#20 + 0)
Counter in file 0 45:9 -> 45:23, #27
Counter in file 0 46:15 -> 46:28, ((#20 + 0) - #26)
Counter in file 0 47:12 -> 47:25, (((#20 + 0) - #26) - #7)
Counter in file 0 47:29 -> 47:42, ((((#20 + 0) - #26) - #7) - #35)
Counter in file 0 47:42 -> 47:43, (#35 + #36)
Counter in file 0 47:42 -> 47:43, (((((#20 + 0) - #26) - #7) - #35) - #36)
Counter in file 0 47:46 -> 47:60, #41
Counter in file 0 47:60 -> 47:61, (#37 + #38)
Counter in file 0 47:60 -> 47:61, (#41 - #38)
Counter in file 0 47:61 -> 49:10, #42
Counter in file 0 49:10 -> 49:11, #43
Counter in file 0 50:9 -> 50:23, #30
Counter in file 0 52:13 -> 54:15, #7
Counter in file 0 57:9 -> 57:10, (#9 + #10)
Counter in file 0 57:16 -> 57:29, ((#27 + #30) + 0)
Counter in file 0 58:9 -> 58:23, #9
Counter in file 0 59:15 -> 59:28, ((#27 + #30) - #31)
Counter in file 0 60:12 -> 60:25, (((#27 + #30) - #31) - #6)
Counter in file 0 60:29 -> 60:42, ((((#27 + #30) - #31) - #6) - #39)
Counter in file 0 60:42 -> 60:43, (#39 + #40)
Counter in file 0 60:42 -> 60:43, (((((#27 + #30) - #31) - #6) - #39) - #40)
Counter in file 0 60:46 -> 60:60, #46
Counter in file 0 60:60 -> 60:61, (#46 - #45)
Counter in file 0 60:60 -> 60:61, (#44 + #45)
Counter in file 0 60:61 -> 62:10, #47
Counter in file 0 62:10 -> 62:11, #48
Counter in file 0 63:9 -> 63:23, #10
Counter in file 0 65:9 -> 65:15, #6
Counter in file 0 67:1 -> 67:2, ((#9 + #10) + (((#6 + #7) + #8) + (((#2 + 0) - #3) - #5)))
Counter in file 0 39:8 -> 39:12, (#17 + (#20 + #21))
Counter in file 0 52:13 -> 52:30, #22
Counter in file 0 53:12 -> 53:16, (#22 + 0)
Counter in file 0 53:17 -> 55:10, #26
Counter in file 0 57:12 -> 57:25, (#26 + 0)
Counter in file 0 57:26 -> 59:10, #27
Counter in file 0 65:17 -> 65:30, ((#26 + 0) - #27)
Counter in file 0 66:16 -> 66:29, (((#26 + 0) - #27) - #7)
Counter in file 0 66:33 -> 66:46, ((((#26 + 0) - #27) - #7) - #37)
Counter in file 0 66:46 -> 66:47, (#37 + #38)
Counter in file 0 66:46 -> 66:47, (((((#26 + 0) - #27) - #7) - #37) - #38)
Counter in file 0 66:50 -> 66:64, #47
Counter in file 0 66:64 -> 66:65, (#47 - #42)
Counter in file 0 66:64 -> 66:65, (#41 + #42)
Counter in file 0 66:65 -> 68:14, #28
Counter in file 0 68:14 -> 68:15, #29
Counter in file 0 69:13 -> 69:27, (#28 + #29)
Counter in file 0 71:13 -> 71:19, #7
Counter in file 0 73:6 -> 73:7, (#27 + (#28 + #29))
Counter in file 0 75:9 -> 75:26, ((#27 + (#28 + #29)) + 0)
Counter in file 0 76:8 -> 76:12, (((#27 + (#28 + #29)) + 0) + 0)
Counter in file 0 76:13 -> 78:6, #30
Counter in file 0 80:9 -> 80:10, (#33 + (#35 + #36))
Counter in file 0 80:16 -> 80:29, (#30 + 0)
Counter in file 0 80:30 -> 82:6, #33
Counter in file 0 82:15 -> 82:28, ((#30 + 0) - #33)
Counter in file 0 83:12 -> 83:25, (((#30 + 0) - #33) - #6)
Counter in file 0 83:29 -> 83:42, ((((#30 + 0) - #33) - #6) - #39)
Counter in file 0 83:42 -> 83:43, (#39 + #40)
Counter in file 0 83:42 -> 83:43, (((((#30 + 0) - #33) - #6) - #39) - #40)
Counter in file 0 83:46 -> 83:60, #48
Counter in file 0 83:60 -> 83:61, (#43 + #44)
Counter in file 0 83:60 -> 83:61, (#48 - #44)
Counter in file 0 83:61 -> 85:10, #35
Counter in file 0 85:10 -> 85:11, #36
Counter in file 0 86:9 -> 86:23, (#35 + #36)
Counter in file 0 88:13 -> 90:15, #6
Counter in file 0 93:9 -> 93:10, (#9 + (#10 + #11))
Counter in file 0 93:16 -> 93:29, ((#33 + (#35 + #36)) + 0)
Counter in file 0 93:30 -> 95:6, #9
Counter in file 0 95:15 -> 95:28, ((#33 + (#35 + #36)) - #9)
Counter in file 0 96:12 -> 96:25, (((#33 + (#35 + #36)) - #9) - #5)
Counter in file 0 96:29 -> 96:42, ((((#33 + (#35 + #36)) - #9) - #5) - #45)
Counter in file 0 96:42 -> 96:43, (#45 + #46)
Counter in file 0 96:42 -> 96:43, (((((#33 + (#35 + #36)) - #9) - #5) - #45) - #46)
Counter in file 0 96:46 -> 96:60, #51
Counter in file 0 96:60 -> 96:61, (#49 + #50)
Counter in file 0 96:60 -> 96:61, (#51 - #50)
Counter in file 0 96:61 -> 98:10, #10
Counter in file 0 98:10 -> 98:11, #11
Counter in file 0 99:9 -> 99:23, (#10 + #11)
Counter in file 0 101:9 -> 101:15, #5
Counter in file 0 103:1 -> 103:2, ((#9 + (#10 + #11)) + (((#5 + #6) + (#7 + #8)) + (((#2 + 0) - #3) - #4)))
Emitting segments for file: ../coverage/conditions.rs
Combined regions:
4:9 -> 4:26 (count=1)
@ -89,7 +108,7 @@ Combined regions:
24:8 -> 24:12 (count=1)
24:13 -> 26:6 (count=1)
28:8 -> 28:21 (count=1)
29:9 -> 29:23 (count=1)
28:22 -> 30:6 (count=1)
30:15 -> 30:28 (count=0)
31:12 -> 31:25 (count=0)
31:29 -> 31:42 (count=0)
@ -100,36 +119,53 @@ Combined regions:
33:10 -> 33:11 (count=0)
34:9 -> 34:23 (count=0)
36:9 -> 36:15 (count=0)
39:9 -> 39:26 (count=1)
40:8 -> 40:12 (count=1)
40:13 -> 42:6 (count=1)
44:9 -> 44:10 (count=0)
44:16 -> 44:29 (count=1)
45:9 -> 45:23 (count=0)
46:15 -> 46:28 (count=1)
47:12 -> 47:25 (count=0)
47:29 -> 47:42 (count=0)
47:42 -> 47:43 (count=0)
47:46 -> 47:60 (count=0)
47:60 -> 47:61 (count=0)
47:61 -> 49:10 (count=0)
49:10 -> 49:11 (count=0)
50:9 -> 50:23 (count=0)
52:13 -> 54:15 (count=1)
57:9 -> 57:10 (count=0)
57:16 -> 57:29 (count=0)
58:9 -> 58:23 (count=0)
59:15 -> 59:28 (count=0)
60:12 -> 60:25 (count=0)
60:29 -> 60:42 (count=0)
60:42 -> 60:43 (count=0)
60:46 -> 60:60 (count=0)
60:60 -> 60:61 (count=0)
60:61 -> 62:10 (count=0)
62:10 -> 62:11 (count=0)
63:9 -> 63:23 (count=0)
65:9 -> 65:15 (count=0)
67:1 -> 67:2 (count=1)
39:8 -> 39:12 (count=1)
52:13 -> 52:30 (count=1)
53:12 -> 53:16 (count=1)
53:17 -> 55:10 (count=1)
57:12 -> 57:25 (count=1)
57:26 -> 59:10 (count=1)
65:17 -> 65:30 (count=0)
66:16 -> 66:29 (count=0)
66:33 -> 66:46 (count=0)
66:46 -> 66:47 (count=0)
66:50 -> 66:64 (count=0)
66:64 -> 66:65 (count=0)
66:65 -> 68:14 (count=0)
68:14 -> 68:15 (count=0)
69:13 -> 69:27 (count=0)
71:13 -> 71:19 (count=0)
73:6 -> 73:7 (count=1)
75:9 -> 75:26 (count=1)
76:8 -> 76:12 (count=1)
76:13 -> 78:6 (count=1)
80:9 -> 80:10 (count=0)
80:16 -> 80:29 (count=1)
80:30 -> 82:6 (count=0)
82:15 -> 82:28 (count=1)
83:12 -> 83:25 (count=0)
83:29 -> 83:42 (count=0)
83:42 -> 83:43 (count=0)
83:46 -> 83:60 (count=0)
83:60 -> 83:61 (count=0)
83:61 -> 85:10 (count=0)
85:10 -> 85:11 (count=0)
86:9 -> 86:23 (count=0)
88:13 -> 90:15 (count=1)
93:9 -> 93:10 (count=0)
93:16 -> 93:29 (count=0)
93:30 -> 95:6 (count=0)
95:15 -> 95:28 (count=0)
96:12 -> 96:25 (count=0)
96:29 -> 96:42 (count=0)
96:42 -> 96:43 (count=0)
96:46 -> 96:60 (count=0)
96:60 -> 96:61 (count=0)
96:61 -> 98:10 (count=0)
98:10 -> 98:11 (count=0)
99:9 -> 99:23 (count=0)
101:9 -> 101:15 (count=0)
103:1 -> 103:2 (count=1)
Segment at 4:9 (count = 1), RegionEntry
Segment at 4:26 (count = 0), Skipped
Segment at 5:8 (count = 1), RegionEntry
@ -166,8 +202,8 @@ Segment at 24:13 (count = 1), RegionEntry
Segment at 26:6 (count = 0), Skipped
Segment at 28:8 (count = 1), RegionEntry
Segment at 28:21 (count = 0), Skipped
Segment at 29:9 (count = 1), RegionEntry
Segment at 29:23 (count = 0), Skipped
Segment at 28:22 (count = 1), RegionEntry
Segment at 30:6 (count = 0), Skipped
Segment at 30:15 (count = 0), RegionEntry
Segment at 30:28 (count = 0), Skipped
Segment at 31:12 (count = 0), RegionEntry
@ -184,55 +220,85 @@ Segment at 34:9 (count = 0), RegionEntry
Segment at 34:23 (count = 0), Skipped
Segment at 36:9 (count = 0), RegionEntry
Segment at 36:15 (count = 0), Skipped
Segment at 39:9 (count = 1), RegionEntry
Segment at 39:26 (count = 0), Skipped
Segment at 40:8 (count = 1), RegionEntry
Segment at 40:12 (count = 0), Skipped
Segment at 40:13 (count = 1), RegionEntry
Segment at 42:6 (count = 0), Skipped
Segment at 44:9 (count = 0), RegionEntry
Segment at 44:10 (count = 0), Skipped
Segment at 44:16 (count = 1), RegionEntry
Segment at 44:29 (count = 0), Skipped
Segment at 45:9 (count = 0), RegionEntry
Segment at 45:23 (count = 0), Skipped
Segment at 46:15 (count = 1), RegionEntry
Segment at 46:28 (count = 0), Skipped
Segment at 47:12 (count = 0), RegionEntry
Segment at 47:25 (count = 0), Skipped
Segment at 47:29 (count = 0), RegionEntry
Segment at 47:42 (count = 0), RegionEntry
Segment at 47:43 (count = 0), Skipped
Segment at 47:46 (count = 0), RegionEntry
Segment at 47:60 (count = 0), RegionEntry
Segment at 47:61 (count = 0), RegionEntry
Segment at 49:10 (count = 0), RegionEntry
Segment at 49:11 (count = 0), Skipped
Segment at 50:9 (count = 0), RegionEntry
Segment at 50:23 (count = 0), Skipped
Segment at 39:8 (count = 1), RegionEntry
Segment at 39:12 (count = 0), Skipped
Segment at 52:13 (count = 1), RegionEntry
Segment at 54:15 (count = 0), Skipped
Segment at 57:9 (count = 0), RegionEntry
Segment at 57:10 (count = 0), Skipped
Segment at 57:16 (count = 0), RegionEntry
Segment at 57:29 (count = 0), Skipped
Segment at 58:9 (count = 0), RegionEntry
Segment at 58:23 (count = 0), Skipped
Segment at 59:15 (count = 0), RegionEntry
Segment at 59:28 (count = 0), Skipped
Segment at 60:12 (count = 0), RegionEntry
Segment at 60:25 (count = 0), Skipped
Segment at 60:29 (count = 0), RegionEntry
Segment at 60:42 (count = 0), RegionEntry
Segment at 60:43 (count = 0), Skipped
Segment at 60:46 (count = 0), RegionEntry
Segment at 60:60 (count = 0), RegionEntry
Segment at 60:61 (count = 0), RegionEntry
Segment at 62:10 (count = 0), RegionEntry
Segment at 62:11 (count = 0), Skipped
Segment at 63:9 (count = 0), RegionEntry
Segment at 63:23 (count = 0), Skipped
Segment at 65:9 (count = 0), RegionEntry
Segment at 65:15 (count = 0), Skipped
Segment at 67:1 (count = 1), RegionEntry
Segment at 67:2 (count = 0), Skipped
Segment at 52:30 (count = 0), Skipped
Segment at 53:12 (count = 1), RegionEntry
Segment at 53:16 (count = 0), Skipped
Segment at 53:17 (count = 1), RegionEntry
Segment at 55:10 (count = 0), Skipped
Segment at 57:12 (count = 1), RegionEntry
Segment at 57:25 (count = 0), Skipped
Segment at 57:26 (count = 1), RegionEntry
Segment at 59:10 (count = 0), Skipped
Segment at 65:17 (count = 0), RegionEntry
Segment at 65:30 (count = 0), Skipped
Segment at 66:16 (count = 0), RegionEntry
Segment at 66:29 (count = 0), Skipped
Segment at 66:33 (count = 0), RegionEntry
Segment at 66:46 (count = 0), RegionEntry
Segment at 66:47 (count = 0), Skipped
Segment at 66:50 (count = 0), RegionEntry
Segment at 66:64 (count = 0), RegionEntry
Segment at 66:65 (count = 0), RegionEntry
Segment at 68:14 (count = 0), RegionEntry
Segment at 68:15 (count = 0), Skipped
Segment at 69:13 (count = 0), RegionEntry
Segment at 69:27 (count = 0), Skipped
Segment at 71:13 (count = 0), RegionEntry
Segment at 71:19 (count = 0), Skipped
Segment at 73:6 (count = 1), RegionEntry
Segment at 73:7 (count = 0), Skipped
Segment at 75:9 (count = 1), RegionEntry
Segment at 75:26 (count = 0), Skipped
Segment at 76:8 (count = 1), RegionEntry
Segment at 76:12 (count = 0), Skipped
Segment at 76:13 (count = 1), RegionEntry
Segment at 78:6 (count = 0), Skipped
Segment at 80:9 (count = 0), RegionEntry
Segment at 80:10 (count = 0), Skipped
Segment at 80:16 (count = 1), RegionEntry
Segment at 80:29 (count = 0), Skipped
Segment at 80:30 (count = 0), RegionEntry
Segment at 82:6 (count = 0), Skipped
Segment at 82:15 (count = 1), RegionEntry
Segment at 82:28 (count = 0), Skipped
Segment at 83:12 (count = 0), RegionEntry
Segment at 83:25 (count = 0), Skipped
Segment at 83:29 (count = 0), RegionEntry
Segment at 83:42 (count = 0), RegionEntry
Segment at 83:43 (count = 0), Skipped
Segment at 83:46 (count = 0), RegionEntry
Segment at 83:60 (count = 0), RegionEntry
Segment at 83:61 (count = 0), RegionEntry
Segment at 85:10 (count = 0), RegionEntry
Segment at 85:11 (count = 0), Skipped
Segment at 86:9 (count = 0), RegionEntry
Segment at 86:23 (count = 0), Skipped
Segment at 88:13 (count = 1), RegionEntry
Segment at 90:15 (count = 0), Skipped
Segment at 93:9 (count = 0), RegionEntry
Segment at 93:10 (count = 0), Skipped
Segment at 93:16 (count = 0), RegionEntry
Segment at 93:29 (count = 0), Skipped
Segment at 93:30 (count = 0), RegionEntry
Segment at 95:6 (count = 0), Skipped
Segment at 95:15 (count = 0), RegionEntry
Segment at 95:28 (count = 0), Skipped
Segment at 96:12 (count = 0), RegionEntry
Segment at 96:25 (count = 0), Skipped
Segment at 96:29 (count = 0), RegionEntry
Segment at 96:42 (count = 0), RegionEntry
Segment at 96:43 (count = 0), Skipped
Segment at 96:46 (count = 0), RegionEntry
Segment at 96:60 (count = 0), RegionEntry
Segment at 96:61 (count = 0), RegionEntry
Segment at 98:10 (count = 0), RegionEntry
Segment at 98:11 (count = 0), Skipped
Segment at 99:9 (count = 0), RegionEntry
Segment at 99:23 (count = 0), Skipped
Segment at 101:9 (count = 0), RegionEntry
Segment at 101:15 (count = 0), Skipped
Segment at 103:1 (count = 1), RegionEntry
Segment at 103:2 (count = 0), Skipped

View file

@ -1,7 +1,4 @@
Counter in file 0 19:13 -> 19:18, #1
Counter in file 0 20:13 -> 20:14, #2
Counter in file 0 20:17 -> 20:22, (#1 + 0)
Counter in file 0 21:9 -> 22:6, (#2 + 0)
Counter in file 0 19:13 -> 22:6, #1
Counter in file 0 7:9 -> 9:26, #1
Counter in file 0 10:8 -> 10:15, (#1 + 0)
Counter in file 0 10:16 -> 12:6, #2
@ -11,21 +8,16 @@ Counter in file 0 48:16 -> 50:6, #3
Counter in file 0 50:6 -> 50:7, ((#2 + (#1 - #2)) - #3)
Counter in file 0 52:9 -> 57:2, (#3 + ((#2 + (#1 - #2)) - #3))
Counter in file 0 33:42 -> 36:10, #1
Counter in file 0 41:37 -> 41:41, #1
Counter in file 0 42:13 -> 43:10, #2
Counter in file 0 40:45 -> 43:10, #1
Emitting segments for file: ../coverage/inner_items.rs
Combined regions:
7:9 -> 9:26 (count=1)
10:8 -> 10:15 (count=1)
10:16 -> 12:6 (count=1)
12:6 -> 12:7 (count=0)
19:13 -> 19:18 (count=3)
20:13 -> 20:14 (count=3)
20:17 -> 20:22 (count=3)
21:9 -> 22:6 (count=3)
19:13 -> 22:6 (count=3)
33:42 -> 36:10 (count=1)
41:37 -> 41:41 (count=1)
42:13 -> 43:10 (count=1)
40:45 -> 43:10 (count=1)
48:8 -> 48:15 (count=1)
48:16 -> 50:6 (count=1)
50:6 -> 50:7 (count=0)
@ -38,18 +30,10 @@ Segment at 10:16 (count = 1), RegionEntry
Segment at 12:6 (count = 0), RegionEntry
Segment at 12:7 (count = 0), Skipped
Segment at 19:13 (count = 3), RegionEntry
Segment at 19:18 (count = 0), Skipped
Segment at 20:13 (count = 3), RegionEntry
Segment at 20:14 (count = 0), Skipped
Segment at 20:17 (count = 3), RegionEntry
Segment at 20:22 (count = 0), Skipped
Segment at 21:9 (count = 3), RegionEntry
Segment at 22:6 (count = 0), Skipped
Segment at 33:42 (count = 1), RegionEntry
Segment at 36:10 (count = 0), Skipped
Segment at 41:37 (count = 1), RegionEntry
Segment at 41:41 (count = 0), Skipped
Segment at 42:13 (count = 1), RegionEntry
Segment at 40:45 (count = 1), RegionEntry
Segment at 43:10 (count = 0), Skipped
Segment at 48:8 (count = 1), RegionEntry
Segment at 48:15 (count = 0), Skipped

View file

@ -1,21 +1,20 @@
Counter in file 0 2:9 -> 3:27, #1
Counter in file 0 5:19 -> 5:32, (#1 + #2)
Counter in file 0 6:13 -> 7:24, ((#1 + #2) - #3)
Counter in file 0 8:13 -> 8:14, ((((#1 + #2) - #3) + (#5 + #6)) - #7)
Counter in file 0 8:18 -> 8:23, (((#1 + #2) - #3) + (#5 + #6))
Counter in file 0 9:16 -> 9:22, (((((#1 + #2) - #3) + (#5 + #6)) - #7) + 0)
Counter in file 0 10:17 -> 10:22, #8
Counter in file 0 12:13 -> 12:19, #9
Counter in file 0 13:13 -> 13:19, #10
Counter in file 0 14:16 -> 14:22, (#10 + 0)
Counter in file 0 15:17 -> 16:27, #11
Counter in file 0 17:21 -> 17:33, #4
Counter in file 0 19:21 -> 21:14, #5
Counter in file 0 21:14 -> 21:15, #6
Counter in file 0 22:10 -> 22:11, (#5 + #6)
Counter in file 0 23:9 -> 23:23, #2
Counter in file 0 24:6 -> 24:7, #3
Counter in file 0 25:1 -> 25:2, (#4 + #3)
Counter in file 0 5:19 -> 5:32, (#1 + (#2 + #3))
Counter in file 0 6:13 -> 7:24, ((#1 + (#2 + #3)) - #4)
Counter in file 0 8:13 -> 8:14, ((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3)
Counter in file 0 8:18 -> 8:23, (((#1 + (#2 + #3)) - #4) + (#6 + #7))
Counter in file 0 9:16 -> 9:22, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) + 0)
Counter in file 0 10:17 -> 10:22, #2
Counter in file 0 12:13 -> 13:19, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2)
Counter in file 0 14:16 -> 14:22, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) + 0)
Counter in file 0 15:17 -> 16:27, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) - #7)
Counter in file 0 17:21 -> 17:33, #5
Counter in file 0 18:24 -> 21:14, #6
Counter in file 0 21:14 -> 21:15, #7
Counter in file 0 22:10 -> 22:11, (#6 + #7)
Counter in file 0 23:9 -> 23:23, (#2 + #3)
Counter in file 0 24:6 -> 24:7, #4
Counter in file 0 25:1 -> 25:2, (#5 + #4)
Emitting segments for file: ../coverage/nested_loops.rs
Combined regions:
2:9 -> 3:27 (count=1)
@ -25,12 +24,11 @@ Combined regions:
8:18 -> 8:23 (count=3)
9:16 -> 9:22 (count=3)
10:17 -> 10:22 (count=0)
12:13 -> 12:19 (count=3)
13:13 -> 13:19 (count=3)
12:13 -> 13:19 (count=3)
14:16 -> 14:22 (count=3)
15:17 -> 16:27 (count=1)
17:21 -> 17:33 (count=1)
19:21 -> 21:14 (count=0)
18:24 -> 21:14 (count=0)
21:14 -> 21:15 (count=2)
22:10 -> 22:11 (count=2)
23:9 -> 23:23 (count=0)
@ -51,8 +49,6 @@ Segment at 9:22 (count = 0), Skipped
Segment at 10:17 (count = 0), RegionEntry
Segment at 10:22 (count = 0), Skipped
Segment at 12:13 (count = 3), RegionEntry
Segment at 12:19 (count = 0), Skipped
Segment at 13:13 (count = 3), RegionEntry
Segment at 13:19 (count = 0), Skipped
Segment at 14:16 (count = 3), RegionEntry
Segment at 14:22 (count = 0), Skipped
@ -60,7 +56,7 @@ Segment at 15:17 (count = 1), RegionEntry
Segment at 16:27 (count = 0), Skipped
Segment at 17:21 (count = 1), RegionEntry
Segment at 17:33 (count = 0), Skipped
Segment at 19:21 (count = 0), RegionEntry
Segment at 18:24 (count = 0), RegionEntry
Segment at 21:14 (count = 2), RegionEntry
Segment at 21:15 (count = 0), Skipped
Segment at 22:10 (count = 2), RegionEntry

View file

@ -0,0 +1,53 @@
Counter in file 0 16:9 -> 16:27, #1
Counter in file 0 17:11 -> 17:24, (#1 + (#2 + (#3 + #4)))
Counter in file 0 18:12 -> 18:26, ((#1 + (#2 + (#3 + #4))) - #5)
Counter in file 0 18:27 -> 21:10, #2
Counter in file 0 21:19 -> 21:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
Counter in file 0 21:33 -> 24:10, #3
Counter in file 0 24:10 -> 24:11, #4
Counter in file 0 24:10 -> 24:11, (#3 + #4)
Counter in file 0 25:9 -> 25:23, (#2 + (#3 + #4))
Counter in file 0 27:5 -> 28:2, #5
Counter in file 0 5:8 -> 5:18, #1
Counter in file 0 5:19 -> 7:6, #2
Counter in file 0 7:6 -> 7:7, (#1 - #2)
Counter in file 0 8:9 -> 13:2, (#2 + (#1 - #2))
Emitting segments for file: ../coverage/overflow.rs
Combined regions:
5:8 -> 5:18 (count=4)
5:19 -> 7:6 (count=1)
7:6 -> 7:7 (count=3)
8:9 -> 13:2 (count=4)
16:9 -> 16:27 (count=1)
17:11 -> 17:24 (count=10)
18:12 -> 18:26 (count=10)
18:27 -> 21:10 (count=0)
21:19 -> 21:32 (count=10)
21:33 -> 24:10 (count=3)
24:10 -> 24:11 (count=15)
25:9 -> 25:23 (count=9)
27:5 -> 28:2 (count=0)
Segment at 5:8 (count = 4), RegionEntry
Segment at 5:18 (count = 0), Skipped
Segment at 5:19 (count = 1), RegionEntry
Segment at 7:6 (count = 3), RegionEntry
Segment at 7:7 (count = 0), Skipped
Segment at 8:9 (count = 4), RegionEntry
Segment at 13:2 (count = 0), Skipped
Segment at 16:9 (count = 1), RegionEntry
Segment at 16:27 (count = 0), Skipped
Segment at 17:11 (count = 10), RegionEntry
Segment at 17:24 (count = 0), Skipped
Segment at 18:12 (count = 10), RegionEntry
Segment at 18:26 (count = 0), Skipped
Segment at 18:27 (count = 0), RegionEntry
Segment at 21:10 (count = 0), Skipped
Segment at 21:19 (count = 10), RegionEntry
Segment at 21:32 (count = 0), Skipped
Segment at 21:33 (count = 3), RegionEntry
Segment at 24:10 (count = 15), RegionEntry
Segment at 24:11 (count = 0), Skipped
Segment at 25:9 (count = 9), RegionEntry
Segment at 25:23 (count = 0), Skipped
Segment at 27:5 (count = 0), RegionEntry
Segment at 28:2 (count = 0), Skipped

View file

@ -0,0 +1,50 @@
Counter in file 0 14:9 -> 14:27, #1
Counter in file 0 15:11 -> 15:24, (#1 + (#2 + (#3 + #4)))
Counter in file 0 16:12 -> 16:26, ((#1 + (#2 + (#3 + #4))) - #5)
Counter in file 0 16:27 -> 18:10, #2
Counter in file 0 18:19 -> 18:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
Counter in file 0 18:33 -> 20:10, #3
Counter in file 0 20:10 -> 20:11, #4
Counter in file 0 20:10 -> 20:11, (#3 + #4)
Counter in file 0 21:9 -> 21:23, (#2 + (#3 + #4))
Counter in file 0 23:5 -> 24:2, #5
Counter in file 0 5:8 -> 5:20, #1
Counter in file 0 6:9 -> 7:26, #2
Counter in file 0 8:12 -> 11:2, (#1 - #2)
Emitting segments for file: ../coverage/panic_unwind.rs
Combined regions:
5:8 -> 5:20 (count=4)
6:9 -> 7:26 (count=1)
8:12 -> 11:2 (count=3)
14:9 -> 14:27 (count=1)
15:11 -> 15:24 (count=10)
16:12 -> 16:26 (count=10)
16:27 -> 18:10 (count=0)
18:19 -> 18:32 (count=10)
18:33 -> 20:10 (count=3)
20:10 -> 20:11 (count=15)
21:9 -> 21:23 (count=9)
23:5 -> 24:2 (count=0)
Segment at 5:8 (count = 4), RegionEntry
Segment at 5:20 (count = 0), Skipped
Segment at 6:9 (count = 1), RegionEntry
Segment at 7:26 (count = 0), Skipped
Segment at 8:12 (count = 3), RegionEntry
Segment at 11:2 (count = 0), Skipped
Segment at 14:9 (count = 1), RegionEntry
Segment at 14:27 (count = 0), Skipped
Segment at 15:11 (count = 10), RegionEntry
Segment at 15:24 (count = 0), Skipped
Segment at 16:12 (count = 10), RegionEntry
Segment at 16:26 (count = 0), Skipped
Segment at 16:27 (count = 0), RegionEntry
Segment at 18:10 (count = 0), Skipped
Segment at 18:19 (count = 10), RegionEntry
Segment at 18:32 (count = 0), Skipped
Segment at 18:33 (count = 3), RegionEntry
Segment at 20:10 (count = 15), RegionEntry
Segment at 20:11 (count = 0), Skipped
Segment at 21:9 (count = 9), RegionEntry
Segment at 21:23 (count = 0), Skipped
Segment at 23:5 (count = 0), RegionEntry
Segment at 24:2 (count = 0), Skipped

View file

@ -3,10 +3,10 @@ Counter in file 0 12:9 -> 12:16, (#1 + 0)
Counter in file 0 13:5 -> 18:6, #2
Counter in file 0 18:6 -> 18:7, (#1 - #2)
Counter in file 0 23:13 -> 25:14, ((#2 + (#1 - #2)) + #3)
Counter in file 0 27:13 -> 27:18, #4
Counter in file 0 27:13 -> 27:18, (((#2 + (#1 - #2)) + #3) - #3)
Counter in file 0 30:9 -> 32:10, #3
Counter in file 0 34:6 -> 34:7, (#2 + (#1 - #2))
Counter in file 0 35:1 -> 35:2, (#4 + 0)
Counter in file 0 35:1 -> 35:2, ((((#2 + (#1 - #2)) + #3) - #3) + 0)
Emitting segments for file: ../coverage/simple_loop.rs
Combined regions:
7:9 -> 9:26 (count=1)

View file

@ -1,12 +1,12 @@
Counter in file 0 13:9 -> 14:23, #1
Counter in file 0 17:9 -> 17:10, ((#1 + (#2 + #3)) - #4)
Counter in file 0 19:9 -> 19:14, (#1 + (#2 + #3))
Counter in file 0 21:9 -> 25:26, #8
Counter in file 0 27:13 -> 27:41, #9
Counter in file 0 21:9 -> 25:26, (((#1 + (#2 + #3)) - #4) + 0)
Counter in file 0 27:13 -> 27:41, #8
Counter in file 0 27:41 -> 27:42, #5
Counter in file 0 28:13 -> 28:42, (#9 - #5)
Counter in file 0 28:13 -> 28:42, (#8 - #5)
Counter in file 0 28:42 -> 28:43, #6
Counter in file 0 32:13 -> 32:42, (#8 - #9)
Counter in file 0 32:13 -> 32:42, (((#1 + (#2 + #3)) - #4) - #8)
Counter in file 0 32:42 -> 32:43, #7
Counter in file 0 33:10 -> 33:11, #2
Counter in file 0 33:10 -> 33:11, #3

View file

@ -1,7 +1,7 @@
Counter in file 0 5:9 -> 5:27, #1
Counter in file 0 7:9 -> 9:10, (#1 + #2)
Counter in file 0 12:13 -> 14:14, ((#1 + #2) - #3)
Counter in file 0 18:21 -> 20:22, #6
Counter in file 0 18:21 -> 20:22, (((#1 + #2) - #3) - #2)
Counter in file 0 22:21 -> 22:27, #4
Counter in file 0 26:21 -> 26:27, #5
Counter in file 0 30:9 -> 32:10, #2

View file

@ -0,0 +1,90 @@
Counter in file 0 8:9 -> 8:22, #1
Counter in file 0 13:11 -> 14:35, (#1 + 0)
Counter in file 0 14:39 -> 14:41, #4
Counter in file 0 15:14 -> 15:52, (#2 + #3)
Counter in file 0 17:11 -> 17:46, (#4 + 0)
Counter in file 0 18:34 -> 18:39, (#4 - #5)
Counter in file 0 18:44 -> 18:46, ((#4 - #5) - #6)
Counter in file 0 19:14 -> 19:52, (#5 + #6)
Counter in file 0 22:9 -> 22:22, (((#4 - #5) - #6) + 0)
Counter in file 0 29:11 -> 30:35, (((#4 - #5) - #6) + 0)
Counter in file 0 30:39 -> 30:41, #9
Counter in file 0 31:14 -> 31:52, (#7 + #8)
Counter in file 0 33:11 -> 34:35, (#9 + 0)
Counter in file 0 34:39 -> 34:41, #12
Counter in file 0 35:14 -> 35:52, (#10 + #11)
Counter in file 0 37:1 -> 37:2, (#12 + 0)
Counter in file 0 9:9 -> 9:16, #1
Counter in file 0 10:16 -> 11:6, #2
Counter in file 0 23:9 -> 23:16, #1
Counter in file 0 24:9 -> 24:16, #2
Counter in file 0 25:9 -> 25:16, #3
Counter in file 0 26:16 -> 27:6, #4
Emitting segments for file: ../coverage/yield.rs
Combined regions:
8:9 -> 8:22 (count=1)
9:9 -> 9:16 (count=1)
10:16 -> 11:6 (count=1)
13:11 -> 14:35 (count=1)
14:39 -> 14:41 (count=1)
15:14 -> 15:52 (count=0)
17:11 -> 17:46 (count=1)
18:34 -> 18:39 (count=1)
18:44 -> 18:46 (count=1)
19:14 -> 19:52 (count=0)
22:9 -> 22:22 (count=1)
23:9 -> 23:16 (count=1)
24:9 -> 24:16 (count=1)
25:9 -> 25:16 (count=0)
26:16 -> 27:6 (count=0)
29:11 -> 30:35 (count=1)
30:39 -> 30:41 (count=1)
31:14 -> 31:52 (count=0)
33:11 -> 34:35 (count=1)
34:39 -> 34:41 (count=1)
35:14 -> 35:52 (count=0)
37:1 -> 37:2 (count=1)
Segment at 8:9 (count = 1), RegionEntry
Segment at 8:22 (count = 0), Skipped
Segment at 9:9 (count = 1), RegionEntry
Segment at 9:16 (count = 0), Skipped
Segment at 10:16 (count = 1), RegionEntry
Segment at 11:6 (count = 0), Skipped
Segment at 13:11 (count = 1), RegionEntry
Segment at 14:35 (count = 0), Skipped
Segment at 14:39 (count = 1), RegionEntry
Segment at 14:41 (count = 0), Skipped
Segment at 15:14 (count = 0), RegionEntry
Segment at 15:52 (count = 0), Skipped
Segment at 17:11 (count = 1), RegionEntry
Segment at 17:46 (count = 0), Skipped
Segment at 18:34 (count = 1), RegionEntry
Segment at 18:39 (count = 0), Skipped
Segment at 18:44 (count = 1), RegionEntry
Segment at 18:46 (count = 0), Skipped
Segment at 19:14 (count = 0), RegionEntry
Segment at 19:52 (count = 0), Skipped
Segment at 22:9 (count = 1), RegionEntry
Segment at 22:22 (count = 0), Skipped
Segment at 23:9 (count = 1), RegionEntry
Segment at 23:16 (count = 0), Skipped
Segment at 24:9 (count = 1), RegionEntry
Segment at 24:16 (count = 0), Skipped
Segment at 25:9 (count = 0), RegionEntry
Segment at 25:16 (count = 0), Skipped
Segment at 26:16 (count = 0), RegionEntry
Segment at 27:6 (count = 0), Skipped
Segment at 29:11 (count = 1), RegionEntry
Segment at 30:35 (count = 0), Skipped
Segment at 30:39 (count = 1), RegionEntry
Segment at 30:41 (count = 0), Skipped
Segment at 31:14 (count = 0), RegionEntry
Segment at 31:52 (count = 0), Skipped
Segment at 33:11 (count = 1), RegionEntry
Segment at 34:35 (count = 0), Skipped
Segment at 34:39 (count = 1), RegionEntry
Segment at 34:41 (count = 0), Skipped
Segment at 35:14 (count = 0), RegionEntry
Segment at 35:52 (count = 0), Skipped
Segment at 37:1 (count = 1), RegionEntry
Segment at 37:2 (count = 0), Skipped

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/abort.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 15,
"covered": 13,
"percent": 86.66666666666667
},
"regions": {
"count": 10,
"covered": 9,
"notcovered": 1,
"percent": 90
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 15,
"covered": 13,
"percent": 86.66666666666667
},
"regions": {
"count": 10,
"covered": 9,
"notcovered": 1,
"percent": 90
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/assert.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 13,
"covered": 10,
"percent": 76.92307692307693
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 13,
"covered": 10,
"percent": 76.92307692307693
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/async.rs",
"summary": {
"functions": {
"count": 9,
"covered": 9,
"percent": 100
},
"instantiations": {
"count": 9,
"covered": 9,
"percent": 100
},
"lines": {
"count": 31,
"covered": 30,
"percent": 96.7741935483871
},
"regions": {
"count": 21,
"covered": 18,
"notcovered": 3,
"percent": 85.71428571428571
}
}
}
],
"totals": {
"functions": {
"count": 9,
"covered": 9,
"percent": 100
},
"instantiations": {
"count": 9,
"covered": 9,
"percent": 100
},
"lines": {
"count": 31,
"covered": 30,
"percent": 96.7741935483871
},
"regions": {
"count": 21,
"covered": 18,
"notcovered": 3,
"percent": 85.71428571428571
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -16,15 +16,15 @@
"percent": 100
},
"lines": {
"count": 49,
"covered": 23,
"percent": 46.93877551020408
"count": 64,
"covered": 33,
"percent": 51.5625
},
"regions": {
"count": 69,
"covered": 18,
"notcovered": 51,
"percent": 26.08695652173913
"count": 88,
"covered": 25,
"notcovered": 63,
"percent": 28.40909090909091
}
}
}
@ -41,15 +41,15 @@
"percent": 100
},
"lines": {
"count": 49,
"covered": 23,
"percent": 46.93877551020408
"count": 64,
"covered": 33,
"percent": 51.5625
},
"regions": {
"count": 69,
"covered": 18,
"notcovered": 51,
"percent": 26.08695652173913
"count": 88,
"covered": 25,
"notcovered": 63,
"percent": 28.40909090909091
}
}
}

View file

@ -16,15 +16,15 @@
"percent": 100
},
"lines": {
"count": 26,
"covered": 26,
"count": 27,
"covered": 27,
"percent": 100
},
"regions": {
"count": 15,
"covered": 13,
"count": 11,
"covered": 9,
"notcovered": 2,
"percent": 86.66666666666667
"percent": 81.81818181818183
}
}
}
@ -41,15 +41,15 @@
"percent": 100
},
"lines": {
"count": 26,
"covered": 26,
"count": 27,
"covered": 27,
"percent": 100
},
"regions": {
"count": 15,
"covered": 13,
"count": 11,
"covered": 9,
"notcovered": 2,
"percent": 86.66666666666667
"percent": 81.81818181818183
}
}
}

View file

@ -16,15 +16,15 @@
"percent": 100
},
"lines": {
"count": 21,
"count": 22,
"covered": 16,
"percent": 76.19047619047619
"percent": 72.72727272727273
},
"regions": {
"count": 18,
"covered": 14,
"count": 17,
"covered": 13,
"notcovered": 4,
"percent": 77.77777777777779
"percent": 76.47058823529412
}
}
}
@ -41,15 +41,15 @@
"percent": 100
},
"lines": {
"count": 21,
"count": 22,
"covered": 16,
"percent": 76.19047619047619
"percent": 72.72727272727273
},
"regions": {
"count": 18,
"covered": 14,
"count": 17,
"covered": 13,
"notcovered": 4,
"percent": 77.77777777777779
"percent": 76.47058823529412
}
}
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/overflow.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 21,
"covered": 17,
"percent": 80.95238095238095
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 21,
"covered": 17,
"percent": 80.95238095238095
},
"regions": {
"count": 14,
"covered": 12,
"notcovered": 2,
"percent": 85.71428571428571
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/panic_unwind.rs",
"summary": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 17,
"covered": 14,
"percent": 82.35294117647058
},
"regions": {
"count": 13,
"covered": 11,
"notcovered": 2,
"percent": 84.61538461538461
}
}
}
],
"totals": {
"functions": {
"count": 2,
"covered": 2,
"percent": 100
},
"instantiations": {
"count": 2,
"covered": 2,
"percent": 100
},
"lines": {
"count": 17,
"covered": 14,
"percent": 82.35294117647058
},
"regions": {
"count": 13,
"covered": 11,
"notcovered": 2,
"percent": 84.61538461538461
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,59 @@
{
"data": [
{
"files": [
{
"filename": "../coverage/yield.rs",
"summary": {
"functions": {
"count": 3,
"covered": 3,
"percent": 100
},
"instantiations": {
"count": 3,
"covered": 3,
"percent": 100
},
"lines": {
"count": 23,
"covered": 16,
"percent": 69.56521739130434
},
"regions": {
"count": 22,
"covered": 16,
"notcovered": 6,
"percent": 72.72727272727273
}
}
}
],
"totals": {
"functions": {
"count": 3,
"covered": 3,
"percent": 100
},
"instantiations": {
"count": 3,
"covered": 3,
"percent": 100
},
"lines": {
"count": 23,
"covered": 16,
"percent": 69.56521739130434
},
"regions": {
"count": 22,
"covered": 16,
"notcovered": 6,
"percent": 72.72727272727273
}
}
}
],
"type": "llvm.coverage.json.export",
"version": "2.0.1"
}

View file

@ -0,0 +1,35 @@
1| |#![feature(unwind_attributes)]
2| |#![allow(unused_assignments)]
3| |
4| |#[unwind(aborts)]
5| |fn might_abort(should_abort: bool) {
6| 4| if should_abort {
7| 0| println!("aborting...");
8| 0| panic!("panics and aborts");
9| 4| } else {
10| 4| println!("Don't Panic");
11| 4| }
12| 4|}
13| |
14| |fn main() -> Result<(),u8> {
15| 1| let mut countdown = 10;
16| 11| while countdown > 0 {
17| 10| if countdown < 5 {
18| 4| might_abort(false);
19| 6| }
20| 10| countdown -= 1;
21| | }
22| 1| Ok(())
23| 1|}
24| |
25| |// Notes:
26| |// 1. Compare this program and its coverage results to those of the similar tests
27| |// `panic_unwind.rs` and `try_error_result.rs`.
28| |// 2. This test confirms the coverage generated when a program includes `TerminatorKind::Abort`.
29| |// 3. The test does not invoke the abort. By executing to a successful completion, the coverage
30| |// results show where the program did and did not execute.
31| |// 4. If the program actually aborted, the coverage counters would not be saved (which "works as
32| |// intended"). Coverage results would show no executed coverage regions.
33| |// 6. If `should_abort` is `true` and the program aborts, the program exits with a `132` status
34| |// (on Linux at least).

View file

@ -0,0 +1,34 @@
1| |#![allow(unused_assignments)]
2| |// expect-exit-status-101
3| |
4| |fn might_fail_assert(one_plus_one: u32) {
5| 4| println!("does 1 + 1 = {}?", one_plus_one);
6| 4| assert_eq!(1 + 1, one_plus_one, "the argument was wrong");
^1
7| 3|}
8| |
9| |fn main() -> Result<(),u8> {
10| 1| let mut countdown = 10;
11| 10| while countdown > 0 {
12| 10| if countdown == 1 {
13| 0| might_fail_assert(3);
14| 10| } else if countdown < 5 {
15| 3| might_fail_assert(2);
16| 15| }
17| 9| countdown -= 1;
18| | }
19| 0| Ok(())
20| 0|}
21| |
22| |// Notes:
23| |// 1. Compare this program and its coverage results to those of the very similar test
24| |// `panic_unwind.rs`, and similar tests `abort.rs` and `try_error_result.rs`.
25| |// 2. This test confirms the coverage generated when a program passes or fails an `assert!()` or
26| |// related `assert_*!()` macro.
27| |// 3. Notably, the `assert` macros *do not* generate `TerminatorKind::Assert`. The macros produce
28| |// conditional expressions, `TerminatorKind::SwitchInt` branches, and a possible call to
29| |// `begin_panic_fmt()` (that begins a panic unwind, if the assertion test fails).
30| |// 4. `TerminatoKind::Assert` is, however, also present in the MIR generated for this test
31| |// (and in many other coverage tests). The `Assert` terminator is typically generated by the
32| |// Rust compiler to check for runtime failures, such as numeric overflows.

View file

@ -0,0 +1,66 @@
1| |#![allow(unused_assignments)]
2| |
3| |// require-rust-edition-2018
4| |
5| 1|async fn f() -> u8 { 1 }
6| |
7| |async fn foo() -> [bool; 10] { [false; 10] }
8| |
9| |pub async fn g(x: u8) {
10| | match x {
11| | y if f().await == y => (),
12| | _ => (),
13| | }
14| 1|}
15| |
16| |// #78366: check the reference to the binding is recorded even if the binding is not autorefed
17| |
18| |async fn h(x: usize) {
19| | match x {
20| | y if foo().await[y] => (),
21| | _ => (),
22| | }
23| 1|}
24| |
25| 1|async fn i(x: u8) {
26| 1| match x {
27| 1| y if f().await == y + 1 => (),
^0 ^0
28| 1| _ => (),
29| | }
30| 2|}
31| |
32| 1|fn main() {
33| 1| let _ = g(10);
34| 1| let _ = h(9);
35| 1| let mut future = Box::pin(i(8));
36| 1| executor::block_on(future.as_mut());
37| 1|}
38| |
39| |mod executor {
40| | use core::{
41| | future::Future,
42| | pin::Pin,
43| | task::{Context, Poll, RawWaker, RawWakerVTable, Waker},
44| | };
45| |
46| | pub fn block_on<F: Future>(mut future: F) -> F::Output {
47| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) };
48| 1|
49| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new(
50| 1| |_| unimplemented!("clone"),
51| 1| |_| unimplemented!("wake"),
52| 1| |_| unimplemented!("wake_by_ref"),
53| 1| |_| (),
54| 1| );
55| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) };
56| 1| let mut context = Context::from_waker(&waker);
57| |
58| | loop {
59| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
60| 1| break val;
61| | }
62| 0| }
63| 1| }
64| |}

View file

@ -27,7 +27,8 @@
27| |
28| 1| if countdown > 7 {
29| 1| countdown -= 4;
30| 0| } else if countdown > 2 {
30| 1| } else if countdown > 2 {
^0
31| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
32| 0| countdown = 0;
33| 0| }
@ -36,34 +37,70 @@
36| 0| return;
37| | }
38| |
39| 1| let mut countdown = 0;
40| 1| if true {
41| 1| countdown = 1;
42| 1| }
43| |
44| 1| let z = if countdown > 7 {
^0
45| 0| countdown -= 4;
46| 1| } else if countdown > 2 {
47| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
48| 0| countdown = 0;
49| 0| }
50| 0| countdown -= 5;
51| | } else {
52| 1| let should_be_reachable = countdown;
53| 1| println!("reached");
54| 1| return;
55| | };
39| 1| if true {
40| | // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no
41| | // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region,
42| | // for the executed `then` block above, to include the closing brace on line 30. That
43| | // changed the line count, but the coverage code region (for the `else if` condition) is
44| | // still valid.
45| | //
46| | // Note that `if` (then) and `else` blocks include the closing brace in their coverage
47| | // code regions when the last line in the block ends in a semicolon, because the Rust
48| | // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the
49| | // empty value for the executed block. When the last line does not end in a semicolon
50| | // (that is, when the block actually results in a value), the additional `Assign` is not
51| | // generated, and the brace is not included.
52| 1| let mut countdown = 0;
53| 1| if true {
54| 1| countdown = 10;
55| 1| }
56| |
57| 0| let w = if countdown > 7 {
58| 0| countdown -= 4;
59| 0| } else if countdown > 2 {
60| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
61| 0| countdown = 0;
62| 0| }
63| 0| countdown -= 5;
64| | } else {
65| 0| return;
66| | };
67| 1|}
57| 1| if countdown > 7 {
58| 1| countdown -= 4;
59| 1| }
60| | // The closing brace of the `then` branch is now included in the coverage region, and shown
61| | // as "executed" (giving its line a count of 1 here). Since, in the original version above,
62| | // the closing brace shares the same line as the `else if` conditional expression (which is
63| | // not executed if the first `then` condition is true), only the condition's code region is
64| | // marked with a count of 0 now.
65| 0| else if countdown > 2 {
66| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
67| 0| countdown = 0;
68| 0| }
69| 0| countdown -= 5;
70| | } else {
71| 0| return;
72| | }
73| 1| }
74| |
75| 1| let mut countdown = 0;
76| 1| if true {
77| 1| countdown = 1;
78| 1| }
79| |
80| 1| let z = if countdown > 7 {
^0
81| 0| countdown -= 4;
82| 1| } else if countdown > 2 {
83| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
84| 0| countdown = 0;
85| 0| }
86| 0| countdown -= 5;
87| | } else {
88| 1| let should_be_reachable = countdown;
89| 1| println!("reached");
90| 1| return;
91| | };
92| |
93| 0| let w = if countdown > 7 {
94| 0| countdown -= 4;
95| 0| } else if countdown > 2 {
96| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
97| 0| countdown = 0;
98| 0| }
99| 0| countdown -= 5;
100| | } else {
101| 0| return;
102| | };
103| 1|}

View file

@ -38,7 +38,7 @@
37| | }
38| |
39| | impl InTrait for InStruct {
40| | fn trait_func(&mut self, incr: u32) {
40| 1| fn trait_func(&mut self, incr: u32) {
41| 1| self.in_struct_field += incr;
42| 1| in_func(self.in_struct_field);
43| 1| }

View file

@ -15,7 +15,7 @@
15| 1| a -= 10;
16| 1| if is_true {
17| 1| break 'outer;
18| | } else {
18| 0| } else {
19| 0| a -= 2;
20| 0| }
21| 2| }

View file

@ -0,0 +1,64 @@
1| |#![allow(unused_assignments)]
2| |// expect-exit-status-101
3| |
4| |fn might_overflow(to_add: u32) -> u32 {
5| 4| if to_add > 5 {
6| 1| println!("this will probably overflow");
7| 3| }
8| 4| let add_to = u32::MAX - 5;
9| 4| println!("does {} + {} overflow?", add_to, to_add);
10| 4| let result = to_add + add_to;
11| 4| println!("continuing after overflow check");
12| 4| result
13| 4|}
14| |
15| |fn main() -> Result<(),u8> {
16| 1| let mut countdown = 10;
17| 10| while countdown > 0 {
18| 10| if countdown == 1 {
19| 0| let result = might_overflow(10);
20| 0| println!("Result: {}", result);
21| 10| } else if countdown < 5 {
22| 3| let result = might_overflow(1);
23| 3| println!("Result: {}", result);
24| 15| }
25| 9| countdown -= 1;
26| | }
27| 0| Ok(())
28| 0|}
29| |
30| |// Notes:
31| |// 1. Compare this program and its coverage results to those of the very similar test `assert.rs`,
32| |// and similar tests `panic_unwind.rs`, abort.rs` and `try_error_result.rs`.
33| |// 2. This test confirms the coverage generated when a program passes or fails a
34| |// compiler-generated `TerminatorKind::Assert` (based on an overflow check, in this case).
35| |// 3. Similar to how the coverage instrumentation handles `TerminatorKind::Call`,
36| |// compiler-generated assertion failures are assumed to be a symptom of a program bug, not
37| |// expected behavior. To simplify the coverage graphs and keep instrumented programs as
38| |// small and fast as possible, `Assert` terminators are assumed to always succeed, and
39| |// therefore are considered "non-branching" terminators. So, an `Assert` terminator does not
40| |// get its own coverage counter.
41| |// 4. After an unhandled panic or failed Assert, coverage results may not always be intuitive.
42| |// In this test, the final count for the statements after the `if` block in `might_overflow()`
43| |// is 4, even though the lines after `to_add + add_to` were executed only 3 times. Depending
44| |// on the MIR graph and the structure of the code, this count could have been 3 (which might
45| |// have been valid for the overflowed add `+`, but should have been 4 for the lines before
46| |// the overflow. The reason for this potential uncertainty is, a `CounterKind` is incremented
47| |// via StatementKind::Counter at the end of the block, but (as in the case in this test),
48| |// a CounterKind::Expression is always evaluated. In this case, the expression was based on
49| |// a `Counter` incremented as part of the evaluation of the `if` expression, which was
50| |// executed, and counted, 4 times, before reaching the overflow add.
51| |
52| |// If the program did not overflow, the coverage for `might_overflow()` would look like this:
53| |//
54| |// 4| |fn might_overflow(to_add: u32) -> u32 {
55| |// 5| 4| if to_add > 5 {
56| |// 6| 0| println!("this will probably overflow");
57| |// 7| 4| }
58| |// 8| 4| let add_to = u32::MAX - 5;
59| |// 9| 4| println!("does {} + {} overflow?", add_to, to_add);
60| |// 10| 4| let result = to_add + add_to;
61| |// 11| 4| println!("continuing after overflow check");
62| |// 12| 4| result
63| |// 13| 4|}

View file

@ -0,0 +1,50 @@
1| |#![allow(unused_assignments)]
2| |// expect-exit-status-101
3| |
4| |fn might_panic(should_panic: bool) {
5| 4| if should_panic {
6| 1| println!("panicking...");
7| 1| panic!("panics");
8| 3| } else {
9| 3| println!("Don't Panic");
10| 3| }
11| 3|}
12| |
13| |fn main() -> Result<(),u8> {
14| 1| let mut countdown = 10;
15| 10| while countdown > 0 {
16| 10| if countdown == 1 {
17| 0| might_panic(true);
18| 10| } else if countdown < 5 {
19| 3| might_panic(false);
20| 15| }
21| 9| countdown -= 1;
22| | }
23| 0| Ok(())
24| 0|}
25| |
26| |// Notes:
27| |// 1. Compare this program and its coverage results to those of the similar tests `abort.rs` and
28| |// `try_error_result.rs`.
29| |// 2. Since the `panic_unwind.rs` test is allowed to unwind, it is also allowed to execute the
30| |// normal program exit cleanup, including writing out the current values of the coverage
31| |// counters.
32| |// 3. The coverage results show (interestingly) that the `panic!()` call did execute, but it does
33| |// not show coverage of the `if countdown == 1` branch in `main()` that calls
34| |// `might_panic(true)` (causing the call to `panic!()`).
35| |// 4. The reason `main()`s `if countdown == 1` branch, calling `might_panic(true)`, appears
36| |// "uncovered" is, InstrumentCoverage (intentionally) treats `TerminatorKind::Call` terminators
37| |// as non-branching, because when a program executes normally, they always are. Errors handled
38| |// via the try `?` operator produce error handling branches that *are* treated as branches in
39| |// coverage results. By treating calls without try `?` operators as non-branching (assumed to
40| |// return normally and continue) the coverage graph can be simplified, producing smaller,
41| |// faster binaries, and cleaner coverage results.
42| |// 5. The reason the coverage results actually show `panic!()` was called is most likely because
43| |// `panic!()` is a macro, not a simple function call, and there are other `Statement`s and/or
44| |// `Terminator`s that execute with a coverage counter before the panic and unwind occur.
45| |// 6. By best practice, programs should not panic. By design, the coverage implementation will not
46| |// incur additional cost (in program size and execution time) to improve coverage results for
47| |// an event that is not supposted to happen.
48| |// 7. FIXME(#78544): This issue describes a feature request for a proposed option to enable
49| |// more accurate coverage results for tests that intentionally panic.

View file

@ -0,0 +1,38 @@
1| |#![feature(generators, generator_trait)]
2| |#![allow(unused_assignments)]
3| |
4| |use std::ops::{Generator, GeneratorState};
5| |use std::pin::Pin;
6| |
7| |fn main() {
8| 1| let mut generator = || {
9| 1| yield 1;
10| 1| return "foo"
11| 1| };
12| |
13| 1| match Pin::new(&mut generator).resume(()) {
14| 1| GeneratorState::Yielded(1) => {}
15| 0| _ => panic!("unexpected value from resume"),
16| | }
17| 1| match Pin::new(&mut generator).resume(()) {
18| 1| GeneratorState::Complete("foo") => {}
19| 0| _ => panic!("unexpected value from resume"),
20| | }
21| |
22| 1| let mut generator = || {
23| 1| yield 1;
24| 1| yield 2;
25| 0| yield 3;
26| 0| return "foo"
27| 0| };
28| |
29| 1| match Pin::new(&mut generator).resume(()) {
30| 1| GeneratorState::Yielded(1) => {}
31| 0| _ => panic!("unexpected value from resume"),
32| | }
33| 1| match Pin::new(&mut generator).resume(()) {
34| 1| GeneratorState::Yielded(2) => {}
35| 0| _ => panic!("unexpected value from resume"),
36| | }
37| 1|}

View file

@ -0,0 +1,41 @@
Counter in file 0 15:9 -> 15:27, #1
Counter in file 0 16:11 -> 16:24, (#1 + (#2 + #3))
Counter in file 0 17:12 -> 17:25, ((#1 + (#2 + #3)) - #4)
Counter in file 0 17:26 -> 19:10, #2
Counter in file 0 19:10 -> 19:11, #3
Counter in file 0 20:9 -> 20:23, (#2 + #3)
Counter in file 0 22:5 -> 23:2, #4
Counter in file 0 6:8 -> 6:20, #1
Counter in file 0 7:9 -> 8:37, #2
Counter in file 0 9:12 -> 12:2, (#1 - #2)
Emitting segments for file: ../coverage/abort.rs
Combined regions:
6:8 -> 6:20 (count=4)
7:9 -> 8:37 (count=0)
9:12 -> 12:2 (count=4)
15:9 -> 15:27 (count=1)
16:11 -> 16:24 (count=11)
17:12 -> 17:25 (count=10)
17:26 -> 19:10 (count=4)
19:10 -> 19:11 (count=6)
20:9 -> 20:23 (count=10)
22:5 -> 23:2 (count=1)
Segment at 6:8 (count = 4), RegionEntry
Segment at 6:20 (count = 0), Skipped
Segment at 7:9 (count = 0), RegionEntry
Segment at 8:37 (count = 0), Skipped
Segment at 9:12 (count = 4), RegionEntry
Segment at 12:2 (count = 0), Skipped
Segment at 15:9 (count = 1), RegionEntry
Segment at 15:27 (count = 0), Skipped
Segment at 16:11 (count = 11), RegionEntry
Segment at 16:24 (count = 0), Skipped
Segment at 17:12 (count = 10), RegionEntry
Segment at 17:25 (count = 0), Skipped
Segment at 17:26 (count = 4), RegionEntry
Segment at 19:10 (count = 6), RegionEntry
Segment at 19:11 (count = 0), Skipped
Segment at 20:9 (count = 10), RegionEntry
Segment at 20:23 (count = 0), Skipped
Segment at 22:5 (count = 1), RegionEntry
Segment at 23:2 (count = 0), Skipped

View file

@ -0,0 +1,54 @@
Counter in file 0 10:9 -> 10:27, #1
Counter in file 0 11:11 -> 11:24, (#1 + (#2 + (#3 + #4)))
Counter in file 0 12:12 -> 12:26, ((#1 + (#2 + (#3 + #4))) - #5)
Counter in file 0 12:27 -> 14:10, #2
Counter in file 0 14:19 -> 14:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
Counter in file 0 14:33 -> 16:10, #3
Counter in file 0 16:10 -> 16:11, #4
Counter in file 0 16:10 -> 16:11, (#3 + #4)
Counter in file 0 17:9 -> 17:23, (#2 + (#3 + #4))
Counter in file 0 19:5 -> 20:2, #5
Counter in file 0 5:5 -> 5:48, #1
Counter in file 0 6:16 -> 6:21, (#1 + 0)
Counter in file 0 6:37 -> 6:61, #2
Counter in file 0 7:1 -> 7:2, (#1 - #2)
Emitting segments for file: ../coverage/assert.rs
Combined regions:
5:5 -> 5:48 (count=4)
6:16 -> 6:21 (count=4)
6:37 -> 6:61 (count=1)
7:1 -> 7:2 (count=3)
10:9 -> 10:27 (count=1)
11:11 -> 11:24 (count=10)
12:12 -> 12:26 (count=10)
12:27 -> 14:10 (count=0)
14:19 -> 14:32 (count=10)
14:33 -> 16:10 (count=3)
16:10 -> 16:11 (count=15)
17:9 -> 17:23 (count=9)
19:5 -> 20:2 (count=0)
Segment at 5:5 (count = 4), RegionEntry
Segment at 5:48 (count = 0), Skipped
Segment at 6:16 (count = 4), RegionEntry
Segment at 6:21 (count = 0), Skipped
Segment at 6:37 (count = 1), RegionEntry
Segment at 6:61 (count = 0), Skipped
Segment at 7:1 (count = 3), RegionEntry
Segment at 7:2 (count = 0), Skipped
Segment at 10:9 (count = 1), RegionEntry
Segment at 10:27 (count = 0), Skipped
Segment at 11:11 (count = 10), RegionEntry
Segment at 11:24 (count = 0), Skipped
Segment at 12:12 (count = 10), RegionEntry
Segment at 12:26 (count = 0), Skipped
Segment at 12:27 (count = 0), RegionEntry
Segment at 14:10 (count = 0), Skipped
Segment at 14:19 (count = 10), RegionEntry
Segment at 14:32 (count = 0), Skipped
Segment at 14:33 (count = 3), RegionEntry
Segment at 16:10 (count = 15), RegionEntry
Segment at 16:11 (count = 0), Skipped
Segment at 17:9 (count = 9), RegionEntry
Segment at 17:23 (count = 0), Skipped
Segment at 19:5 (count = 0), RegionEntry
Segment at 20:2 (count = 0), Skipped

View file

@ -0,0 +1,85 @@
Counter in file 0 15:9 -> 15:75, #1
Counter in file 0 15:9 -> 15:75, #1
Counter in file 0 15:9 -> 15:75, #1
Counter in file 0 47:13 -> 56:54, #1
Counter in file 0 59:32 -> 59:35, ((#1 + #2) - #2)
Counter in file 0 59:39 -> 59:73, (#1 + #2)
Counter in file 0 60:23 -> 60:26, (((#1 + #2) - #2) + 0)
Counter in file 0 62:10 -> 62:11, #2
Counter in file 0 63:5 -> 63:6, (((#1 + #2) - #2) + 0)
Counter in file 0 53:17 -> 53:19, #1
Counter in file 0 7:44 -> 7:45, #1
Counter in file 0 5:24 -> 5:25, #1
Counter in file 0 5:22 -> 5:25, #1
Counter in file 0 25:19 -> 26:12, #1
Counter in file 0 27:9 -> 27:10, #3
Counter in file 0 27:14 -> 27:17, (#1 + 0)
Counter in file 0 27:27 -> 27:32, #2
Counter in file 0 27:32 -> 27:33, (#2 - #3)
Counter in file 0 27:36 -> 27:38, (#3 + 0)
Counter in file 0 28:14 -> 28:16, #4
Counter in file 0 30:1 -> 30:2, (#3 + #4)
Counter in file 0 32:11 -> 37:2, #1
Counter in file 0 30:1 -> 30:2, #1
Counter in file 0 14:1 -> 14:2, #1
Counter in file 0 23:1 -> 23:2, #1
Emitting segments for file: ../coverage/async.rs
Combined regions:
5:22 -> 5:25 (count=1)
5:24 -> 5:25 (count=1)
14:1 -> 14:2 (count=1)
23:1 -> 23:2 (count=1)
25:19 -> 26:12 (count=1)
27:9 -> 27:10 (count=0)
27:14 -> 27:17 (count=1)
27:27 -> 27:32 (count=1)
27:32 -> 27:33 (count=1)
27:36 -> 27:38 (count=0)
28:14 -> 28:16 (count=1)
30:1 -> 30:2 (count=2)
32:11 -> 37:2 (count=1)
47:13 -> 56:54 (count=1)
53:17 -> 53:19 (count=1)
59:32 -> 59:35 (count=1)
59:39 -> 59:73 (count=1)
60:23 -> 60:26 (count=1)
62:10 -> 62:11 (count=0)
63:5 -> 63:6 (count=1)
Segment at 5:22 (count = 1), RegionEntry
Segment at 5:24 (count = 1), RegionEntry
Segment at 5:25 (count = 0), Skipped
Segment at 14:1 (count = 1), RegionEntry
Segment at 14:2 (count = 0), Skipped
Segment at 23:1 (count = 1), RegionEntry
Segment at 23:2 (count = 0), Skipped
Segment at 25:19 (count = 1), RegionEntry
Segment at 26:12 (count = 0), Skipped
Segment at 27:9 (count = 0), RegionEntry
Segment at 27:10 (count = 0), Skipped
Segment at 27:14 (count = 1), RegionEntry
Segment at 27:17 (count = 0), Skipped
Segment at 27:27 (count = 1), RegionEntry
Segment at 27:32 (count = 1), RegionEntry
Segment at 27:33 (count = 0), Skipped
Segment at 27:36 (count = 0), RegionEntry
Segment at 27:38 (count = 0), Skipped
Segment at 28:14 (count = 1), RegionEntry
Segment at 28:16 (count = 0), Skipped
Segment at 30:1 (count = 2), RegionEntry
Segment at 30:2 (count = 0), Skipped
Segment at 32:11 (count = 1), RegionEntry
Segment at 37:2 (count = 0), Skipped
Segment at 47:13 (count = 1), RegionEntry
Segment at 53:17 (count = 1), RegionEntry
Segment at 53:19 (count = 1)
Segment at 56:54 (count = 0), Skipped
Segment at 59:32 (count = 1), RegionEntry
Segment at 59:35 (count = 0), Skipped
Segment at 59:39 (count = 1), RegionEntry
Segment at 59:73 (count = 0), Skipped
Segment at 60:23 (count = 1), RegionEntry
Segment at 60:26 (count = 0), Skipped
Segment at 62:10 (count = 0), RegionEntry
Segment at 62:11 (count = 0), Skipped
Segment at 63:5 (count = 1), RegionEntry
Segment at 63:6 (count = 0), Skipped

View file

@ -1,72 +1,91 @@
Counter in file 0 4:9 -> 4:26, #1
Counter in file 0 5:8 -> 5:12, (#1 + 0)
Counter in file 0 5:13 -> 7:6, #2
Counter in file 0 10:9 -> 10:10, (#4 + #11)
Counter in file 0 10:9 -> 10:10, (#3 + (#12 + #13))
Counter in file 0 10:16 -> 10:29, (#2 + 0)
Counter in file 0 11:9 -> 12:10, #4
Counter in file 0 11:9 -> 12:10, #3
Counter in file 0 13:15 -> 13:28, ((#2 + 0) - #3)
Counter in file 0 14:12 -> 14:25, #5
Counter in file 0 14:29 -> 14:42, (#5 - #13)
Counter in file 0 14:42 -> 14:43, (#13 + #14)
Counter in file 0 14:42 -> 14:43, ((#5 - #13) - #14)
Counter in file 0 14:46 -> 14:60, #21
Counter in file 0 14:60 -> 14:61, (#17 + #18)
Counter in file 0 14:60 -> 14:61, (#21 - #18)
Counter in file 0 14:61 -> 16:10, #22
Counter in file 0 16:10 -> 16:11, #23
Counter in file 0 17:9 -> 18:18, #11
Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #5)
Counter in file 0 23:9 -> 23:26, ((#4 + #11) + 0)
Counter in file 0 24:8 -> 24:12, ((#4 + #11) + 0)
Counter in file 0 24:13 -> 26:6, #12
Counter in file 0 28:8 -> 28:21, (#12 + 0)
Counter in file 0 29:9 -> 29:23, #16
Counter in file 0 30:15 -> 30:28, ((#12 + 0) - #15)
Counter in file 0 31:12 -> 31:25, (((#12 + 0) - #15) - #8)
Counter in file 0 31:29 -> 31:42, ((((#12 + 0) - #15) - #8) - #24)
Counter in file 0 31:42 -> 31:43, (((((#12 + 0) - #15) - #8) - #24) - #25)
Counter in file 0 14:12 -> 14:25, #4
Counter in file 0 14:29 -> 14:42, (#4 - #15)
Counter in file 0 14:42 -> 14:43, ((#4 - #15) - #16)
Counter in file 0 14:42 -> 14:43, (#15 + #16)
Counter in file 0 14:46 -> 14:60, #23
Counter in file 0 14:60 -> 14:61, (#18 + #19)
Counter in file 0 14:60 -> 14:61, (#23 - #19)
Counter in file 0 14:61 -> 16:10, #12
Counter in file 0 16:10 -> 16:11, #13
Counter in file 0 17:9 -> 18:18, (#12 + #13)
Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #4)
Counter in file 0 23:9 -> 23:26, ((#3 + (#12 + #13)) + 0)
Counter in file 0 24:8 -> 24:12, ((#3 + (#12 + #13)) + 0)
Counter in file 0 24:13 -> 26:6, #14
Counter in file 0 28:8 -> 28:21, (#14 + 0)
Counter in file 0 28:22 -> 30:6, #17
Counter in file 0 30:15 -> 30:28, ((#14 + 0) - #17)
Counter in file 0 31:12 -> 31:25, (((#14 + 0) - #17) - #8)
Counter in file 0 31:29 -> 31:42, ((((#14 + 0) - #17) - #8) - #24)
Counter in file 0 31:42 -> 31:43, (((((#14 + 0) - #17) - #8) - #24) - #25)
Counter in file 0 31:42 -> 31:43, (#24 + #25)
Counter in file 0 31:46 -> 31:60, #32
Counter in file 0 31:60 -> 31:61, (#28 + #29)
Counter in file 0 31:60 -> 31:61, (#32 - #29)
Counter in file 0 31:61 -> 33:10, #33
Counter in file 0 33:10 -> 33:11, #34
Counter in file 0 34:9 -> 34:23, #19
Counter in file 0 31:46 -> 31:60, #34
Counter in file 0 31:60 -> 31:61, (#34 - #32)
Counter in file 0 31:60 -> 31:61, (#31 + #32)
Counter in file 0 31:61 -> 33:10, #20
Counter in file 0 33:10 -> 33:11, #21
Counter in file 0 34:9 -> 34:23, (#20 + #21)
Counter in file 0 36:9 -> 36:15, #8
Counter in file 0 39:9 -> 39:26, (#16 + #19)
Counter in file 0 40:8 -> 40:12, ((#16 + #19) + 0)
Counter in file 0 40:13 -> 42:6, #20
Counter in file 0 44:9 -> 44:10, (#27 + #30)
Counter in file 0 44:16 -> 44:29, (#20 + 0)
Counter in file 0 45:9 -> 45:23, #27
Counter in file 0 46:15 -> 46:28, ((#20 + 0) - #26)
Counter in file 0 47:12 -> 47:25, (((#20 + 0) - #26) - #7)
Counter in file 0 47:29 -> 47:42, ((((#20 + 0) - #26) - #7) - #35)
Counter in file 0 47:42 -> 47:43, (#35 + #36)
Counter in file 0 47:42 -> 47:43, (((((#20 + 0) - #26) - #7) - #35) - #36)
Counter in file 0 47:46 -> 47:60, #41
Counter in file 0 47:60 -> 47:61, (#37 + #38)
Counter in file 0 47:60 -> 47:61, (#41 - #38)
Counter in file 0 47:61 -> 49:10, #42
Counter in file 0 49:10 -> 49:11, #43
Counter in file 0 50:9 -> 50:23, #30
Counter in file 0 52:13 -> 54:15, #7
Counter in file 0 57:9 -> 57:10, (#9 + #10)
Counter in file 0 57:16 -> 57:29, ((#27 + #30) + 0)
Counter in file 0 58:9 -> 58:23, #9
Counter in file 0 59:15 -> 59:28, ((#27 + #30) - #31)
Counter in file 0 60:12 -> 60:25, (((#27 + #30) - #31) - #6)
Counter in file 0 60:29 -> 60:42, ((((#27 + #30) - #31) - #6) - #39)
Counter in file 0 60:42 -> 60:43, (#39 + #40)
Counter in file 0 60:42 -> 60:43, (((((#27 + #30) - #31) - #6) - #39) - #40)
Counter in file 0 60:46 -> 60:60, #46
Counter in file 0 60:60 -> 60:61, (#46 - #45)
Counter in file 0 60:60 -> 60:61, (#44 + #45)
Counter in file 0 60:61 -> 62:10, #47
Counter in file 0 62:10 -> 62:11, #48
Counter in file 0 63:9 -> 63:23, #10
Counter in file 0 65:9 -> 65:15, #6
Counter in file 0 67:1 -> 67:2, ((#9 + #10) + (((#6 + #7) + #8) + (((#2 + 0) - #3) - #5)))
Counter in file 0 39:8 -> 39:12, (#17 + (#20 + #21))
Counter in file 0 52:13 -> 52:30, #22
Counter in file 0 53:12 -> 53:16, (#22 + 0)
Counter in file 0 53:17 -> 55:10, #26
Counter in file 0 57:12 -> 57:25, (#26 + 0)
Counter in file 0 57:26 -> 59:10, #27
Counter in file 0 65:17 -> 65:30, ((#26 + 0) - #27)
Counter in file 0 66:16 -> 66:29, (((#26 + 0) - #27) - #7)
Counter in file 0 66:33 -> 66:46, ((((#26 + 0) - #27) - #7) - #37)
Counter in file 0 66:46 -> 66:47, (#37 + #38)
Counter in file 0 66:46 -> 66:47, (((((#26 + 0) - #27) - #7) - #37) - #38)
Counter in file 0 66:50 -> 66:64, #47
Counter in file 0 66:64 -> 66:65, (#47 - #42)
Counter in file 0 66:64 -> 66:65, (#41 + #42)
Counter in file 0 66:65 -> 68:14, #28
Counter in file 0 68:14 -> 68:15, #29
Counter in file 0 69:13 -> 69:27, (#28 + #29)
Counter in file 0 71:13 -> 71:19, #7
Counter in file 0 73:6 -> 73:7, (#27 + (#28 + #29))
Counter in file 0 75:9 -> 75:26, ((#27 + (#28 + #29)) + 0)
Counter in file 0 76:8 -> 76:12, (((#27 + (#28 + #29)) + 0) + 0)
Counter in file 0 76:13 -> 78:6, #30
Counter in file 0 80:9 -> 80:10, (#33 + (#35 + #36))
Counter in file 0 80:16 -> 80:29, (#30 + 0)
Counter in file 0 80:30 -> 82:6, #33
Counter in file 0 82:15 -> 82:28, ((#30 + 0) - #33)
Counter in file 0 83:12 -> 83:25, (((#30 + 0) - #33) - #6)
Counter in file 0 83:29 -> 83:42, ((((#30 + 0) - #33) - #6) - #39)
Counter in file 0 83:42 -> 83:43, (#39 + #40)
Counter in file 0 83:42 -> 83:43, (((((#30 + 0) - #33) - #6) - #39) - #40)
Counter in file 0 83:46 -> 83:60, #48
Counter in file 0 83:60 -> 83:61, (#43 + #44)
Counter in file 0 83:60 -> 83:61, (#48 - #44)
Counter in file 0 83:61 -> 85:10, #35
Counter in file 0 85:10 -> 85:11, #36
Counter in file 0 86:9 -> 86:23, (#35 + #36)
Counter in file 0 88:13 -> 90:15, #6
Counter in file 0 93:9 -> 93:10, (#9 + (#10 + #11))
Counter in file 0 93:16 -> 93:29, ((#33 + (#35 + #36)) + 0)
Counter in file 0 93:30 -> 95:6, #9
Counter in file 0 95:15 -> 95:28, ((#33 + (#35 + #36)) - #9)
Counter in file 0 96:12 -> 96:25, (((#33 + (#35 + #36)) - #9) - #5)
Counter in file 0 96:29 -> 96:42, ((((#33 + (#35 + #36)) - #9) - #5) - #45)
Counter in file 0 96:42 -> 96:43, (#45 + #46)
Counter in file 0 96:42 -> 96:43, (((((#33 + (#35 + #36)) - #9) - #5) - #45) - #46)
Counter in file 0 96:46 -> 96:60, #51
Counter in file 0 96:60 -> 96:61, (#49 + #50)
Counter in file 0 96:60 -> 96:61, (#51 - #50)
Counter in file 0 96:61 -> 98:10, #10
Counter in file 0 98:10 -> 98:11, #11
Counter in file 0 99:9 -> 99:23, (#10 + #11)
Counter in file 0 101:9 -> 101:15, #5
Counter in file 0 103:1 -> 103:2, ((#9 + (#10 + #11)) + (((#5 + #6) + (#7 + #8)) + (((#2 + 0) - #3) - #4)))
Emitting segments for file: ../coverage/conditions.rs
Combined regions:
4:9 -> 4:26 (count=1)
@ -89,7 +108,7 @@ Combined regions:
24:8 -> 24:12 (count=1)
24:13 -> 26:6 (count=1)
28:8 -> 28:21 (count=1)
29:9 -> 29:23 (count=1)
28:22 -> 30:6 (count=1)
30:15 -> 30:28 (count=0)
31:12 -> 31:25 (count=0)
31:29 -> 31:42 (count=0)
@ -100,36 +119,53 @@ Combined regions:
33:10 -> 33:11 (count=0)
34:9 -> 34:23 (count=0)
36:9 -> 36:15 (count=0)
39:9 -> 39:26 (count=1)
40:8 -> 40:12 (count=1)
40:13 -> 42:6 (count=1)
44:9 -> 44:10 (count=0)
44:16 -> 44:29 (count=1)
45:9 -> 45:23 (count=0)
46:15 -> 46:28 (count=1)
47:12 -> 47:25 (count=0)
47:29 -> 47:42 (count=0)
47:42 -> 47:43 (count=0)
47:46 -> 47:60 (count=0)
47:60 -> 47:61 (count=0)
47:61 -> 49:10 (count=0)
49:10 -> 49:11 (count=0)
50:9 -> 50:23 (count=0)
52:13 -> 54:15 (count=1)
57:9 -> 57:10 (count=0)
57:16 -> 57:29 (count=0)
58:9 -> 58:23 (count=0)
59:15 -> 59:28 (count=0)
60:12 -> 60:25 (count=0)
60:29 -> 60:42 (count=0)
60:42 -> 60:43 (count=0)
60:46 -> 60:60 (count=0)
60:60 -> 60:61 (count=0)
60:61 -> 62:10 (count=0)
62:10 -> 62:11 (count=0)
63:9 -> 63:23 (count=0)
65:9 -> 65:15 (count=0)
67:1 -> 67:2 (count=1)
39:8 -> 39:12 (count=1)
52:13 -> 52:30 (count=1)
53:12 -> 53:16 (count=1)
53:17 -> 55:10 (count=1)
57:12 -> 57:25 (count=1)
57:26 -> 59:10 (count=1)
65:17 -> 65:30 (count=0)
66:16 -> 66:29 (count=0)
66:33 -> 66:46 (count=0)
66:46 -> 66:47 (count=0)
66:50 -> 66:64 (count=0)
66:64 -> 66:65 (count=0)
66:65 -> 68:14 (count=0)
68:14 -> 68:15 (count=0)
69:13 -> 69:27 (count=0)
71:13 -> 71:19 (count=0)
73:6 -> 73:7 (count=1)
75:9 -> 75:26 (count=1)
76:8 -> 76:12 (count=1)
76:13 -> 78:6 (count=1)
80:9 -> 80:10 (count=0)
80:16 -> 80:29 (count=1)
80:30 -> 82:6 (count=0)
82:15 -> 82:28 (count=1)
83:12 -> 83:25 (count=0)
83:29 -> 83:42 (count=0)
83:42 -> 83:43 (count=0)
83:46 -> 83:60 (count=0)
83:60 -> 83:61 (count=0)
83:61 -> 85:10 (count=0)
85:10 -> 85:11 (count=0)
86:9 -> 86:23 (count=0)
88:13 -> 90:15 (count=1)
93:9 -> 93:10 (count=0)
93:16 -> 93:29 (count=0)
93:30 -> 95:6 (count=0)
95:15 -> 95:28 (count=0)
96:12 -> 96:25 (count=0)
96:29 -> 96:42 (count=0)
96:42 -> 96:43 (count=0)
96:46 -> 96:60 (count=0)
96:60 -> 96:61 (count=0)
96:61 -> 98:10 (count=0)
98:10 -> 98:11 (count=0)
99:9 -> 99:23 (count=0)
101:9 -> 101:15 (count=0)
103:1 -> 103:2 (count=1)
Segment at 4:9 (count = 1), RegionEntry
Segment at 4:26 (count = 0), Skipped
Segment at 5:8 (count = 1), RegionEntry
@ -166,8 +202,8 @@ Segment at 24:13 (count = 1), RegionEntry
Segment at 26:6 (count = 0), Skipped
Segment at 28:8 (count = 1), RegionEntry
Segment at 28:21 (count = 0), Skipped
Segment at 29:9 (count = 1), RegionEntry
Segment at 29:23 (count = 0), Skipped
Segment at 28:22 (count = 1), RegionEntry
Segment at 30:6 (count = 0), Skipped
Segment at 30:15 (count = 0), RegionEntry
Segment at 30:28 (count = 0), Skipped
Segment at 31:12 (count = 0), RegionEntry
@ -184,55 +220,85 @@ Segment at 34:9 (count = 0), RegionEntry
Segment at 34:23 (count = 0), Skipped
Segment at 36:9 (count = 0), RegionEntry
Segment at 36:15 (count = 0), Skipped
Segment at 39:9 (count = 1), RegionEntry
Segment at 39:26 (count = 0), Skipped
Segment at 40:8 (count = 1), RegionEntry
Segment at 40:12 (count = 0), Skipped
Segment at 40:13 (count = 1), RegionEntry
Segment at 42:6 (count = 0), Skipped
Segment at 44:9 (count = 0), RegionEntry
Segment at 44:10 (count = 0), Skipped
Segment at 44:16 (count = 1), RegionEntry
Segment at 44:29 (count = 0), Skipped
Segment at 45:9 (count = 0), RegionEntry
Segment at 45:23 (count = 0), Skipped
Segment at 46:15 (count = 1), RegionEntry
Segment at 46:28 (count = 0), Skipped
Segment at 47:12 (count = 0), RegionEntry
Segment at 47:25 (count = 0), Skipped
Segment at 47:29 (count = 0), RegionEntry
Segment at 47:42 (count = 0), RegionEntry
Segment at 47:43 (count = 0), Skipped
Segment at 47:46 (count = 0), RegionEntry
Segment at 47:60 (count = 0), RegionEntry
Segment at 47:61 (count = 0), RegionEntry
Segment at 49:10 (count = 0), RegionEntry
Segment at 49:11 (count = 0), Skipped
Segment at 50:9 (count = 0), RegionEntry
Segment at 50:23 (count = 0), Skipped
Segment at 39:8 (count = 1), RegionEntry
Segment at 39:12 (count = 0), Skipped
Segment at 52:13 (count = 1), RegionEntry
Segment at 54:15 (count = 0), Skipped
Segment at 57:9 (count = 0), RegionEntry
Segment at 57:10 (count = 0), Skipped
Segment at 57:16 (count = 0), RegionEntry
Segment at 57:29 (count = 0), Skipped
Segment at 58:9 (count = 0), RegionEntry
Segment at 58:23 (count = 0), Skipped
Segment at 59:15 (count = 0), RegionEntry
Segment at 59:28 (count = 0), Skipped
Segment at 60:12 (count = 0), RegionEntry
Segment at 60:25 (count = 0), Skipped
Segment at 60:29 (count = 0), RegionEntry
Segment at 60:42 (count = 0), RegionEntry
Segment at 60:43 (count = 0), Skipped
Segment at 60:46 (count = 0), RegionEntry
Segment at 60:60 (count = 0), RegionEntry
Segment at 60:61 (count = 0), RegionEntry
Segment at 62:10 (count = 0), RegionEntry
Segment at 62:11 (count = 0), Skipped
Segment at 63:9 (count = 0), RegionEntry
Segment at 63:23 (count = 0), Skipped
Segment at 65:9 (count = 0), RegionEntry
Segment at 65:15 (count = 0), Skipped
Segment at 67:1 (count = 1), RegionEntry
Segment at 67:2 (count = 0), Skipped
Segment at 52:30 (count = 0), Skipped
Segment at 53:12 (count = 1), RegionEntry
Segment at 53:16 (count = 0), Skipped
Segment at 53:17 (count = 1), RegionEntry
Segment at 55:10 (count = 0), Skipped
Segment at 57:12 (count = 1), RegionEntry
Segment at 57:25 (count = 0), Skipped
Segment at 57:26 (count = 1), RegionEntry
Segment at 59:10 (count = 0), Skipped
Segment at 65:17 (count = 0), RegionEntry
Segment at 65:30 (count = 0), Skipped
Segment at 66:16 (count = 0), RegionEntry
Segment at 66:29 (count = 0), Skipped
Segment at 66:33 (count = 0), RegionEntry
Segment at 66:46 (count = 0), RegionEntry
Segment at 66:47 (count = 0), Skipped
Segment at 66:50 (count = 0), RegionEntry
Segment at 66:64 (count = 0), RegionEntry
Segment at 66:65 (count = 0), RegionEntry
Segment at 68:14 (count = 0), RegionEntry
Segment at 68:15 (count = 0), Skipped
Segment at 69:13 (count = 0), RegionEntry
Segment at 69:27 (count = 0), Skipped
Segment at 71:13 (count = 0), RegionEntry
Segment at 71:19 (count = 0), Skipped
Segment at 73:6 (count = 1), RegionEntry
Segment at 73:7 (count = 0), Skipped
Segment at 75:9 (count = 1), RegionEntry
Segment at 75:26 (count = 0), Skipped
Segment at 76:8 (count = 1), RegionEntry
Segment at 76:12 (count = 0), Skipped
Segment at 76:13 (count = 1), RegionEntry
Segment at 78:6 (count = 0), Skipped
Segment at 80:9 (count = 0), RegionEntry
Segment at 80:10 (count = 0), Skipped
Segment at 80:16 (count = 1), RegionEntry
Segment at 80:29 (count = 0), Skipped
Segment at 80:30 (count = 0), RegionEntry
Segment at 82:6 (count = 0), Skipped
Segment at 82:15 (count = 1), RegionEntry
Segment at 82:28 (count = 0), Skipped
Segment at 83:12 (count = 0), RegionEntry
Segment at 83:25 (count = 0), Skipped
Segment at 83:29 (count = 0), RegionEntry
Segment at 83:42 (count = 0), RegionEntry
Segment at 83:43 (count = 0), Skipped
Segment at 83:46 (count = 0), RegionEntry
Segment at 83:60 (count = 0), RegionEntry
Segment at 83:61 (count = 0), RegionEntry
Segment at 85:10 (count = 0), RegionEntry
Segment at 85:11 (count = 0), Skipped
Segment at 86:9 (count = 0), RegionEntry
Segment at 86:23 (count = 0), Skipped
Segment at 88:13 (count = 1), RegionEntry
Segment at 90:15 (count = 0), Skipped
Segment at 93:9 (count = 0), RegionEntry
Segment at 93:10 (count = 0), Skipped
Segment at 93:16 (count = 0), RegionEntry
Segment at 93:29 (count = 0), Skipped
Segment at 93:30 (count = 0), RegionEntry
Segment at 95:6 (count = 0), Skipped
Segment at 95:15 (count = 0), RegionEntry
Segment at 95:28 (count = 0), Skipped
Segment at 96:12 (count = 0), RegionEntry
Segment at 96:25 (count = 0), Skipped
Segment at 96:29 (count = 0), RegionEntry
Segment at 96:42 (count = 0), RegionEntry
Segment at 96:43 (count = 0), Skipped
Segment at 96:46 (count = 0), RegionEntry
Segment at 96:60 (count = 0), RegionEntry
Segment at 96:61 (count = 0), RegionEntry
Segment at 98:10 (count = 0), RegionEntry
Segment at 98:11 (count = 0), Skipped
Segment at 99:9 (count = 0), RegionEntry
Segment at 99:23 (count = 0), Skipped
Segment at 101:9 (count = 0), RegionEntry
Segment at 101:15 (count = 0), Skipped
Segment at 103:1 (count = 1), RegionEntry
Segment at 103:2 (count = 0), Skipped

View file

@ -1,7 +1,4 @@
Counter in file 0 19:13 -> 19:18, #1
Counter in file 0 20:13 -> 20:14, #2
Counter in file 0 20:17 -> 20:22, (#1 + 0)
Counter in file 0 21:9 -> 22:6, (#2 + 0)
Counter in file 0 19:13 -> 22:6, #1
Counter in file 0 7:9 -> 9:26, #1
Counter in file 0 10:8 -> 10:15, (#1 + 0)
Counter in file 0 10:16 -> 12:6, #2
@ -11,21 +8,16 @@ Counter in file 0 48:16 -> 50:6, #3
Counter in file 0 50:6 -> 50:7, ((#2 + (#1 - #2)) - #3)
Counter in file 0 52:9 -> 57:2, (#3 + ((#2 + (#1 - #2)) - #3))
Counter in file 0 33:42 -> 36:10, #1
Counter in file 0 41:37 -> 41:41, #1
Counter in file 0 42:13 -> 43:10, #2
Counter in file 0 40:45 -> 43:10, #1
Emitting segments for file: ../coverage/inner_items.rs
Combined regions:
7:9 -> 9:26 (count=1)
10:8 -> 10:15 (count=1)
10:16 -> 12:6 (count=1)
12:6 -> 12:7 (count=0)
19:13 -> 19:18 (count=3)
20:13 -> 20:14 (count=3)
20:17 -> 20:22 (count=3)
21:9 -> 22:6 (count=3)
19:13 -> 22:6 (count=3)
33:42 -> 36:10 (count=1)
41:37 -> 41:41 (count=1)
42:13 -> 43:10 (count=1)
40:45 -> 43:10 (count=1)
48:8 -> 48:15 (count=1)
48:16 -> 50:6 (count=1)
50:6 -> 50:7 (count=0)
@ -38,18 +30,10 @@ Segment at 10:16 (count = 1), RegionEntry
Segment at 12:6 (count = 0), RegionEntry
Segment at 12:7 (count = 0), Skipped
Segment at 19:13 (count = 3), RegionEntry
Segment at 19:18 (count = 0), Skipped
Segment at 20:13 (count = 3), RegionEntry
Segment at 20:14 (count = 0), Skipped
Segment at 20:17 (count = 3), RegionEntry
Segment at 20:22 (count = 0), Skipped
Segment at 21:9 (count = 3), RegionEntry
Segment at 22:6 (count = 0), Skipped
Segment at 33:42 (count = 1), RegionEntry
Segment at 36:10 (count = 0), Skipped
Segment at 41:37 (count = 1), RegionEntry
Segment at 41:41 (count = 0), Skipped
Segment at 42:13 (count = 1), RegionEntry
Segment at 40:45 (count = 1), RegionEntry
Segment at 43:10 (count = 0), Skipped
Segment at 48:8 (count = 1), RegionEntry
Segment at 48:15 (count = 0), Skipped

View file

@ -1,21 +1,20 @@
Counter in file 0 2:9 -> 3:27, #1
Counter in file 0 5:19 -> 5:32, (#1 + #2)
Counter in file 0 6:13 -> 7:24, ((#1 + #2) - #3)
Counter in file 0 8:13 -> 8:14, ((((#1 + #2) - #3) + (#5 + #6)) - #7)
Counter in file 0 8:18 -> 8:23, (((#1 + #2) - #3) + (#5 + #6))
Counter in file 0 9:16 -> 9:22, (((((#1 + #2) - #3) + (#5 + #6)) - #7) + 0)
Counter in file 0 10:17 -> 10:22, #8
Counter in file 0 12:13 -> 12:19, #9
Counter in file 0 13:13 -> 13:19, #10
Counter in file 0 14:16 -> 14:22, (#10 + 0)
Counter in file 0 15:17 -> 16:27, #11
Counter in file 0 17:21 -> 17:33, #4
Counter in file 0 19:21 -> 21:14, #5
Counter in file 0 21:14 -> 21:15, #6
Counter in file 0 22:10 -> 22:11, (#5 + #6)
Counter in file 0 23:9 -> 23:23, #2
Counter in file 0 24:6 -> 24:7, #3
Counter in file 0 25:1 -> 25:2, (#4 + #3)
Counter in file 0 5:19 -> 5:32, (#1 + (#2 + #3))
Counter in file 0 6:13 -> 7:24, ((#1 + (#2 + #3)) - #4)
Counter in file 0 8:13 -> 8:14, ((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3)
Counter in file 0 8:18 -> 8:23, (((#1 + (#2 + #3)) - #4) + (#6 + #7))
Counter in file 0 9:16 -> 9:22, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) + 0)
Counter in file 0 10:17 -> 10:22, #2
Counter in file 0 12:13 -> 13:19, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2)
Counter in file 0 14:16 -> 14:22, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) + 0)
Counter in file 0 15:17 -> 16:27, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) - #7)
Counter in file 0 17:21 -> 17:33, #5
Counter in file 0 18:24 -> 21:14, #6
Counter in file 0 21:14 -> 21:15, #7
Counter in file 0 22:10 -> 22:11, (#6 + #7)
Counter in file 0 23:9 -> 23:23, (#2 + #3)
Counter in file 0 24:6 -> 24:7, #4
Counter in file 0 25:1 -> 25:2, (#5 + #4)
Emitting segments for file: ../coverage/nested_loops.rs
Combined regions:
2:9 -> 3:27 (count=1)
@ -25,12 +24,11 @@ Combined regions:
8:18 -> 8:23 (count=3)
9:16 -> 9:22 (count=3)
10:17 -> 10:22 (count=0)
12:13 -> 12:19 (count=3)
13:13 -> 13:19 (count=3)
12:13 -> 13:19 (count=3)
14:16 -> 14:22 (count=3)
15:17 -> 16:27 (count=1)
17:21 -> 17:33 (count=1)
19:21 -> 21:14 (count=0)
18:24 -> 21:14 (count=0)
21:14 -> 21:15 (count=2)
22:10 -> 22:11 (count=2)
23:9 -> 23:23 (count=0)
@ -51,8 +49,6 @@ Segment at 9:22 (count = 0), Skipped
Segment at 10:17 (count = 0), RegionEntry
Segment at 10:22 (count = 0), Skipped
Segment at 12:13 (count = 3), RegionEntry
Segment at 12:19 (count = 0), Skipped
Segment at 13:13 (count = 3), RegionEntry
Segment at 13:19 (count = 0), Skipped
Segment at 14:16 (count = 3), RegionEntry
Segment at 14:22 (count = 0), Skipped
@ -60,7 +56,7 @@ Segment at 15:17 (count = 1), RegionEntry
Segment at 16:27 (count = 0), Skipped
Segment at 17:21 (count = 1), RegionEntry
Segment at 17:33 (count = 0), Skipped
Segment at 19:21 (count = 0), RegionEntry
Segment at 18:24 (count = 0), RegionEntry
Segment at 21:14 (count = 2), RegionEntry
Segment at 21:15 (count = 0), Skipped
Segment at 22:10 (count = 2), RegionEntry

View file

@ -0,0 +1,53 @@
Counter in file 0 16:9 -> 16:27, #1
Counter in file 0 17:11 -> 17:24, (#1 + (#2 + (#3 + #4)))
Counter in file 0 18:12 -> 18:26, ((#1 + (#2 + (#3 + #4))) - #5)
Counter in file 0 18:27 -> 21:10, #2
Counter in file 0 21:19 -> 21:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
Counter in file 0 21:33 -> 24:10, #3
Counter in file 0 24:10 -> 24:11, #4
Counter in file 0 24:10 -> 24:11, (#3 + #4)
Counter in file 0 25:9 -> 25:23, (#2 + (#3 + #4))
Counter in file 0 27:5 -> 28:2, #5
Counter in file 0 5:8 -> 5:18, #1
Counter in file 0 5:19 -> 7:6, #2
Counter in file 0 7:6 -> 7:7, (#1 - #2)
Counter in file 0 8:9 -> 13:2, (#2 + (#1 - #2))
Emitting segments for file: ../coverage/overflow.rs
Combined regions:
5:8 -> 5:18 (count=4)
5:19 -> 7:6 (count=1)
7:6 -> 7:7 (count=3)
8:9 -> 13:2 (count=4)
16:9 -> 16:27 (count=1)
17:11 -> 17:24 (count=10)
18:12 -> 18:26 (count=10)
18:27 -> 21:10 (count=0)
21:19 -> 21:32 (count=10)
21:33 -> 24:10 (count=3)
24:10 -> 24:11 (count=15)
25:9 -> 25:23 (count=9)
27:5 -> 28:2 (count=0)
Segment at 5:8 (count = 4), RegionEntry
Segment at 5:18 (count = 0), Skipped
Segment at 5:19 (count = 1), RegionEntry
Segment at 7:6 (count = 3), RegionEntry
Segment at 7:7 (count = 0), Skipped
Segment at 8:9 (count = 4), RegionEntry
Segment at 13:2 (count = 0), Skipped
Segment at 16:9 (count = 1), RegionEntry
Segment at 16:27 (count = 0), Skipped
Segment at 17:11 (count = 10), RegionEntry
Segment at 17:24 (count = 0), Skipped
Segment at 18:12 (count = 10), RegionEntry
Segment at 18:26 (count = 0), Skipped
Segment at 18:27 (count = 0), RegionEntry
Segment at 21:10 (count = 0), Skipped
Segment at 21:19 (count = 10), RegionEntry
Segment at 21:32 (count = 0), Skipped
Segment at 21:33 (count = 3), RegionEntry
Segment at 24:10 (count = 15), RegionEntry
Segment at 24:11 (count = 0), Skipped
Segment at 25:9 (count = 9), RegionEntry
Segment at 25:23 (count = 0), Skipped
Segment at 27:5 (count = 0), RegionEntry
Segment at 28:2 (count = 0), Skipped

View file

@ -0,0 +1,50 @@
Counter in file 0 14:9 -> 14:27, #1
Counter in file 0 15:11 -> 15:24, (#1 + (#2 + (#3 + #4)))
Counter in file 0 16:12 -> 16:26, ((#1 + (#2 + (#3 + #4))) - #5)
Counter in file 0 16:27 -> 18:10, #2
Counter in file 0 18:19 -> 18:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
Counter in file 0 18:33 -> 20:10, #3
Counter in file 0 20:10 -> 20:11, #4
Counter in file 0 20:10 -> 20:11, (#3 + #4)
Counter in file 0 21:9 -> 21:23, (#2 + (#3 + #4))
Counter in file 0 23:5 -> 24:2, #5
Counter in file 0 5:8 -> 5:20, #1
Counter in file 0 6:9 -> 7:26, #2
Counter in file 0 8:12 -> 11:2, (#1 - #2)
Emitting segments for file: ../coverage/panic_unwind.rs
Combined regions:
5:8 -> 5:20 (count=4)
6:9 -> 7:26 (count=1)
8:12 -> 11:2 (count=3)
14:9 -> 14:27 (count=1)
15:11 -> 15:24 (count=10)
16:12 -> 16:26 (count=10)
16:27 -> 18:10 (count=0)
18:19 -> 18:32 (count=10)
18:33 -> 20:10 (count=3)
20:10 -> 20:11 (count=15)
21:9 -> 21:23 (count=9)
23:5 -> 24:2 (count=0)
Segment at 5:8 (count = 4), RegionEntry
Segment at 5:20 (count = 0), Skipped
Segment at 6:9 (count = 1), RegionEntry
Segment at 7:26 (count = 0), Skipped
Segment at 8:12 (count = 3), RegionEntry
Segment at 11:2 (count = 0), Skipped
Segment at 14:9 (count = 1), RegionEntry
Segment at 14:27 (count = 0), Skipped
Segment at 15:11 (count = 10), RegionEntry
Segment at 15:24 (count = 0), Skipped
Segment at 16:12 (count = 10), RegionEntry
Segment at 16:26 (count = 0), Skipped
Segment at 16:27 (count = 0), RegionEntry
Segment at 18:10 (count = 0), Skipped
Segment at 18:19 (count = 10), RegionEntry
Segment at 18:32 (count = 0), Skipped
Segment at 18:33 (count = 3), RegionEntry
Segment at 20:10 (count = 15), RegionEntry
Segment at 20:11 (count = 0), Skipped
Segment at 21:9 (count = 9), RegionEntry
Segment at 21:23 (count = 0), Skipped
Segment at 23:5 (count = 0), RegionEntry
Segment at 24:2 (count = 0), Skipped

View file

@ -1,28 +1,28 @@
Counter in file 0 4:32 -> 4:33, (#3 + (#1 + #2))
Counter in file 0 4:48 -> 4:49, ((#1 + #2) + ((#3 + #4) + ((#5 + #6) + #7)))
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 21:11 -> 26:2, #1
Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 4:32 -> 4:33, ((#4 + #5) + #6)
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:53 -> 4:54, (#1 + (#2 + (#3 + #4)))
Counter in file 0 13:9 -> 18:6, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:10 -> 4:15, #1
Counter in file 0 4:35 -> 4:37, #1
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:17 -> 4:22, #1
Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 13:9 -> 18:6, #1
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:10 -> 4:15, #1
Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 4:35 -> 4:37, #1
Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 4:17 -> 4:22, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
Counter in file 0 4:32 -> 4:33, (#3 + (#1 + #2))
Emitting segments for file: ../coverage/partial_eq.rs
Combined regions:
4:17 -> 4:22 (count=2)

View file

@ -3,10 +3,10 @@ Counter in file 0 12:9 -> 12:16, (#1 + 0)
Counter in file 0 13:5 -> 18:6, #2
Counter in file 0 18:6 -> 18:7, (#1 - #2)
Counter in file 0 23:13 -> 25:14, ((#2 + (#1 - #2)) + #3)
Counter in file 0 27:13 -> 27:18, #4
Counter in file 0 27:13 -> 27:18, (((#2 + (#1 - #2)) + #3) - #3)
Counter in file 0 30:9 -> 32:10, #3
Counter in file 0 34:6 -> 34:7, (#2 + (#1 - #2))
Counter in file 0 35:1 -> 35:2, (#4 + 0)
Counter in file 0 35:1 -> 35:2, ((((#2 + (#1 - #2)) + #3) - #3) + 0)
Emitting segments for file: ../coverage/simple_loop.rs
Combined regions:
7:9 -> 9:26 (count=1)

View file

@ -1,12 +1,12 @@
Counter in file 0 13:9 -> 14:23, #1
Counter in file 0 17:9 -> 17:10, ((#1 + (#2 + #3)) - #4)
Counter in file 0 19:9 -> 19:14, (#1 + (#2 + #3))
Counter in file 0 21:9 -> 25:26, #8
Counter in file 0 27:13 -> 27:41, #9
Counter in file 0 21:9 -> 25:26, (((#1 + (#2 + #3)) - #4) + 0)
Counter in file 0 27:13 -> 27:41, #8
Counter in file 0 27:41 -> 27:42, #5
Counter in file 0 28:13 -> 28:42, (#9 - #5)
Counter in file 0 28:13 -> 28:42, (#8 - #5)
Counter in file 0 28:42 -> 28:43, #6
Counter in file 0 32:13 -> 32:42, (#8 - #9)
Counter in file 0 32:13 -> 32:42, (((#1 + (#2 + #3)) - #4) - #8)
Counter in file 0 32:42 -> 32:43, #7
Counter in file 0 33:10 -> 33:11, #2
Counter in file 0 33:10 -> 33:11, #3

View file

@ -1,7 +1,7 @@
Counter in file 0 5:9 -> 5:27, #1
Counter in file 0 7:9 -> 9:10, (#1 + #2)
Counter in file 0 12:13 -> 14:14, ((#1 + #2) - #3)
Counter in file 0 18:21 -> 20:22, #6
Counter in file 0 18:21 -> 20:22, (((#1 + #2) - #3) - #2)
Counter in file 0 22:21 -> 22:27, #4
Counter in file 0 26:21 -> 26:27, #5
Counter in file 0 30:9 -> 32:10, #2

View file

@ -0,0 +1,90 @@
Counter in file 0 8:9 -> 8:22, #1
Counter in file 0 13:11 -> 14:35, (#1 + 0)
Counter in file 0 14:39 -> 14:41, #4
Counter in file 0 15:14 -> 15:52, (#2 + #3)
Counter in file 0 17:11 -> 17:46, (#4 + 0)
Counter in file 0 18:34 -> 18:39, (#4 - #5)
Counter in file 0 18:44 -> 18:46, ((#4 - #5) - #6)
Counter in file 0 19:14 -> 19:52, (#5 + #6)
Counter in file 0 22:9 -> 22:22, (((#4 - #5) - #6) + 0)
Counter in file 0 29:11 -> 30:35, (((#4 - #5) - #6) + 0)
Counter in file 0 30:39 -> 30:41, #9
Counter in file 0 31:14 -> 31:52, (#7 + #8)
Counter in file 0 33:11 -> 34:35, (#9 + 0)
Counter in file 0 34:39 -> 34:41, #12
Counter in file 0 35:14 -> 35:52, (#10 + #11)
Counter in file 0 37:1 -> 37:2, (#12 + 0)
Counter in file 0 9:9 -> 9:16, #1
Counter in file 0 10:16 -> 11:6, #2
Counter in file 0 23:9 -> 23:16, #1
Counter in file 0 24:9 -> 24:16, #2
Counter in file 0 25:9 -> 25:16, #3
Counter in file 0 26:16 -> 27:6, #4
Emitting segments for file: ../coverage/yield.rs
Combined regions:
8:9 -> 8:22 (count=1)
9:9 -> 9:16 (count=1)
10:16 -> 11:6 (count=1)
13:11 -> 14:35 (count=1)
14:39 -> 14:41 (count=1)
15:14 -> 15:52 (count=0)
17:11 -> 17:46 (count=1)
18:34 -> 18:39 (count=1)
18:44 -> 18:46 (count=1)
19:14 -> 19:52 (count=0)
22:9 -> 22:22 (count=1)
23:9 -> 23:16 (count=1)
24:9 -> 24:16 (count=1)
25:9 -> 25:16 (count=0)
26:16 -> 27:6 (count=0)
29:11 -> 30:35 (count=1)
30:39 -> 30:41 (count=1)
31:14 -> 31:52 (count=0)
33:11 -> 34:35 (count=1)
34:39 -> 34:41 (count=1)
35:14 -> 35:52 (count=0)
37:1 -> 37:2 (count=1)
Segment at 8:9 (count = 1), RegionEntry
Segment at 8:22 (count = 0), Skipped
Segment at 9:9 (count = 1), RegionEntry
Segment at 9:16 (count = 0), Skipped
Segment at 10:16 (count = 1), RegionEntry
Segment at 11:6 (count = 0), Skipped
Segment at 13:11 (count = 1), RegionEntry
Segment at 14:35 (count = 0), Skipped
Segment at 14:39 (count = 1), RegionEntry
Segment at 14:41 (count = 0), Skipped
Segment at 15:14 (count = 0), RegionEntry
Segment at 15:52 (count = 0), Skipped
Segment at 17:11 (count = 1), RegionEntry
Segment at 17:46 (count = 0), Skipped
Segment at 18:34 (count = 1), RegionEntry
Segment at 18:39 (count = 0), Skipped
Segment at 18:44 (count = 1), RegionEntry
Segment at 18:46 (count = 0), Skipped
Segment at 19:14 (count = 0), RegionEntry
Segment at 19:52 (count = 0), Skipped
Segment at 22:9 (count = 1), RegionEntry
Segment at 22:22 (count = 0), Skipped
Segment at 23:9 (count = 1), RegionEntry
Segment at 23:16 (count = 0), Skipped
Segment at 24:9 (count = 1), RegionEntry
Segment at 24:16 (count = 0), Skipped
Segment at 25:9 (count = 0), RegionEntry
Segment at 25:16 (count = 0), Skipped
Segment at 26:16 (count = 0), RegionEntry
Segment at 27:6 (count = 0), Skipped
Segment at 29:11 (count = 1), RegionEntry
Segment at 30:35 (count = 0), Skipped
Segment at 30:39 (count = 1), RegionEntry
Segment at 30:41 (count = 0), Skipped
Segment at 31:14 (count = 0), RegionEntry
Segment at 31:52 (count = 0), Skipped
Segment at 33:11 (count = 1), RegionEntry
Segment at 34:35 (count = 0), Skipped
Segment at 34:39 (count = 1), RegionEntry
Segment at 34:41 (count = 0), Skipped
Segment at 35:14 (count = 0), RegionEntry
Segment at 35:52 (count = 0), Skipped
Segment at 37:1 (count = 1), RegionEntry
Segment at 37:2 (count = 0), Skipped

View file

@ -43,6 +43,9 @@ endif
%: $(SOURCEDIR)/%.rs
# Compile the test program with coverage instrumentation and generate relevant MIR.
$(RUSTC) $(SOURCEDIR)/$@.rs \
$$( grep -q '^\/\/ require-rust-edition-2018' $(SOURCEDIR)/$@.rs && \
echo "--edition=2018" \
) \
-Zinstrument-coverage \
-Clink-dead-code=$(LINK_DEAD_CODE) \
-Zdump-mir=InstrumentCoverage \

View file

@ -0,0 +1,99 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>abort.main - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 13"><span class="line"><span class="code" style="--layer: 0">fn main() -&gt; Result&lt;(),u8&gt; {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="15:25-15:27: @0[1]: _1 = const 10_i32
15:9-15:22: @0[2]: FakeRead(ForLet, _1)"><span class="annotation">@0⦊</span>mut countdown = 10<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> while </span><span><span class="code odd" style="--layer: 1" title="16:11-16:20: @2[2]: _5 = _1
16:11-16:24: @2[3]: _4 = Gt(move _5, const 0_i32)
16:11-16:24: @2[5]: FakeRead(ForMatchedPlace, _4)"><span class="annotation">@1,2⦊</span>countdown &gt; 0<span class="annotation">⦉@1,2</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="17:12-17:21: @5[3]: _8 = _1
17:12-17:25: @5[4]: _7 = Lt(move _8, const 5_i32)
17:12-17:25: @5[6]: FakeRead(ForMatchedPlace, _7)"><span class="annotation">@3,5⦊</span>countdown &lt; 5<span class="annotation">⦉@3,5</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="18:13-18:31: @8.Call: _9 = might_abort(const false) -&gt; [return: bb9, unwind: bb12]
17:26-19:10: @9[1]: _6 = const ()
19:10-19:10: @9.Goto: goto -&gt; bb10"><span class="annotation">@6,8,9⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="18:13-18:31: @8.Call: _9 = might_abort(const false) -&gt; [return: bb9, unwind: bb12]
17:26-19:10: @9[1]: _6 = const ()
19:10-19:10: @9.Goto: goto -&gt; bb10"> might_abort(false);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="18:13-18:31: @8.Call: _9 = might_abort(const false) -&gt; [return: bb9, unwind: bb12]
17:26-19:10: @9[1]: _6 = const ()
19:10-19:10: @9.Goto: goto -&gt; bb10"> }<span class="annotation">⦉@6,8,9</span></span></span><span><span class="code even" style="--layer: 1" title="19:10-19:10: @7.Goto: goto -&gt; bb10"><span class="annotation">@7⦊</span><span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="20:9-20:23: @10[2]: _10 = CheckedSub(_1, const 1_i32)
20:9-20:23: @11[0]: _1 = move (_10.0: i32)"><span class="annotation">@10,11⦊</span>countdown -= 1<span class="annotation">⦉@10,11</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="22:8-22:10: @4[4]: _12 = ()
22:5-22:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _12)
23:2-23:2: @4.Return: return"><span class="annotation">@4⦊</span>Ok(())</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="22:8-22:10: @4[4]: _12 = ()
22:5-22:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _12)
23:2-23:2: @4.Return: return">}<span class="annotation">⦉@4</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,164 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>abort.might_abort - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 4"><span class="line"><span class="code" style="--layer: 0">fn might_abort(should_abort: bool) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="6:8-6:20: @0[1]: _2 = _1
6:8-6:20: @0[2]: FakeRead(ForMatchedPlace, _2)"><span class="annotation">@0⦊</span>should_abort<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="7:18-7:31: @3[6]: _33 = const might_abort::promoted[3]
7:18-7:31: @3[7]: _9 = &amp;(*_33)
7:18-7:31: @3[8]: _8 = &amp;(*_9)
7:18-7:31: @3[9]: _7 = move _8 as &amp;[&amp;str] (Pointer(Unsize))
7:9-7:33: @3[15]: _15 = ()
7:9-7:33: @3[16]: FakeRead(ForMatchedPlace, _15)
7:9-7:33: @3[17]: _32 = const might_abort::promoted[2]
7:9-7:33: @3[18]: _13 = &amp;(*_32)
7:9-7:33: @3[19]: _12 = &amp;(*_13)
7:9-7:33: @3[20]: _11 = move _12 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
7:9-7:33: @3.Call: _6 = Arguments::new_v1(move _7, move _11) -&gt; [return: bb4, unwind: bb8]
7:9-7:33: @4.Call: _5 = _print(move _6) -&gt; [return: bb5, unwind: bb8]
7:9-7:33: @5[5]: _4 = const ()
8:9-8:37: @5.Call: begin_panic::&lt;&amp;str&gt;(const &quot;panics and aborts&quot;) -&gt; bb8"><span class="annotation">@1,3,4,5⦊</span>println!("aborting...");</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="7:18-7:31: @3[6]: _33 = const might_abort::promoted[3]
7:18-7:31: @3[7]: _9 = &amp;(*_33)
7:18-7:31: @3[8]: _8 = &amp;(*_9)
7:18-7:31: @3[9]: _7 = move _8 as &amp;[&amp;str] (Pointer(Unsize))
7:9-7:33: @3[15]: _15 = ()
7:9-7:33: @3[16]: FakeRead(ForMatchedPlace, _15)
7:9-7:33: @3[17]: _32 = const might_abort::promoted[2]
7:9-7:33: @3[18]: _13 = &amp;(*_32)
7:9-7:33: @3[19]: _12 = &amp;(*_13)
7:9-7:33: @3[20]: _11 = move _12 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
7:9-7:33: @3.Call: _6 = Arguments::new_v1(move _7, move _11) -&gt; [return: bb4, unwind: bb8]
7:9-7:33: @4.Call: _5 = _print(move _6) -&gt; [return: bb5, unwind: bb8]
7:9-7:33: @5[5]: _4 = const ()
8:9-8:37: @5.Call: begin_panic::&lt;&amp;str&gt;(const &quot;panics and aborts&quot;) -&gt; bb8"> panic!("panics and aborts");<span class="annotation">⦉@1,3,4,5</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> } else </span><span><span class="code even" style="--layer: 1" title="10:18-10:31: @2[6]: _31 = const might_abort::promoted[1]
10:18-10:31: @2[7]: _23 = &amp;(*_31)
10:18-10:31: @2[8]: _22 = &amp;(*_23)
10:18-10:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
10:9-10:33: @2[15]: _29 = ()
10:9-10:33: @2[16]: FakeRead(ForMatchedPlace, _29)
10:9-10:33: @2[17]: _30 = const might_abort::promoted[0]
10:9-10:33: @2[18]: _27 = &amp;(*_30)
10:9-10:33: @2[19]: _26 = &amp;(*_27)
10:9-10:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
10:9-10:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
10:9-10:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
10:9-10:33: @7[5]: _18 = const ()
9:12-11:6: @7[7]: _0 = const ()
12:2-12:2: @7.Return: return"><span class="annotation">@2,6,7⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="10:18-10:31: @2[6]: _31 = const might_abort::promoted[1]
10:18-10:31: @2[7]: _23 = &amp;(*_31)
10:18-10:31: @2[8]: _22 = &amp;(*_23)
10:18-10:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
10:9-10:33: @2[15]: _29 = ()
10:9-10:33: @2[16]: FakeRead(ForMatchedPlace, _29)
10:9-10:33: @2[17]: _30 = const might_abort::promoted[0]
10:9-10:33: @2[18]: _27 = &amp;(*_30)
10:9-10:33: @2[19]: _26 = &amp;(*_27)
10:9-10:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
10:9-10:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
10:9-10:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
10:9-10:33: @7[5]: _18 = const ()
9:12-11:6: @7[7]: _0 = const ()
12:2-12:2: @7.Return: return"> println!("Don't Panic");</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="10:18-10:31: @2[6]: _31 = const might_abort::promoted[1]
10:18-10:31: @2[7]: _23 = &amp;(*_31)
10:18-10:31: @2[8]: _22 = &amp;(*_23)
10:18-10:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
10:9-10:33: @2[15]: _29 = ()
10:9-10:33: @2[16]: FakeRead(ForMatchedPlace, _29)
10:9-10:33: @2[17]: _30 = const might_abort::promoted[0]
10:9-10:33: @2[18]: _27 = &amp;(*_30)
10:9-10:33: @2[19]: _26 = &amp;(*_27)
10:9-10:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
10:9-10:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
10:9-10:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
10:9-10:33: @7[5]: _18 = const ()
9:12-11:6: @7[7]: _0 = const ()
12:2-12:2: @7.Return: return"> }</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="10:18-10:31: @2[6]: _31 = const might_abort::promoted[1]
10:18-10:31: @2[7]: _23 = &amp;(*_31)
10:18-10:31: @2[8]: _22 = &amp;(*_23)
10:18-10:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
10:9-10:33: @2[15]: _29 = ()
10:9-10:33: @2[16]: FakeRead(ForMatchedPlace, _29)
10:9-10:33: @2[17]: _30 = const might_abort::promoted[0]
10:9-10:33: @2[18]: _27 = &amp;(*_30)
10:9-10:33: @2[19]: _26 = &amp;(*_27)
10:9-10:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
10:9-10:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
10:9-10:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
10:9-10:33: @7[5]: _18 = const ()
9:12-11:6: @7[7]: _0 = const ()
12:2-12:2: @7.Return: return">}<span class="annotation">⦉@2,6,7</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,103 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>assert.main - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 8"><span class="line"><span class="code" style="--layer: 0">fn main() -&gt; Result&lt;(),u8&gt; {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="10:25-10:27: @0[1]: _1 = const 10_i32
10:9-10:22: @0[2]: FakeRead(ForLet, _1)"><span class="annotation">@0⦊</span>mut countdown = 10<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> while </span><span><span class="code odd" style="--layer: 1" title="11:11-11:20: @2[2]: _5 = _1
11:11-11:24: @2[3]: _4 = Gt(move _5, const 0_i32)
11:11-11:24: @2[5]: FakeRead(ForMatchedPlace, _4)"><span class="annotation">@1,2⦊</span>countdown &gt; 0<span class="annotation">⦉@1,2</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="12:12-12:21: @5[3]: _8 = _1
12:12-12:26: @5[4]: _7 = Eq(move _8, const 1_i32)
12:12-12:26: @5[6]: FakeRead(ForMatchedPlace, _7)"><span class="annotation">@3,5⦊</span>countdown == 1<span class="annotation">⦉@3,5</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="13:13-13:33: @8.Call: _9 = might_fail_assert(const 3_u32) -&gt; [return: bb9, unwind: bb17]
12:27-14:10: @9[1]: _6 = const ()"><span class="annotation">@6,8,9⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="13:13-13:33: @8.Call: _9 = might_fail_assert(const 3_u32) -&gt; [return: bb9, unwind: bb17]
12:27-14:10: @9[1]: _6 = const ()"> might_fail_assert(3);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="13:13-13:33: @8.Call: _9 = might_fail_assert(const 3_u32) -&gt; [return: bb9, unwind: bb17]
12:27-14:10: @9[1]: _6 = const ()"> }<span class="annotation">⦉@6,8,9</span></span></span><span class="code" style="--layer: 0"> else if </span><span><span class="code even" style="--layer: 1" title="14:19-14:28: @7[2]: _11 = _1
14:19-14:32: @7[3]: _10 = Lt(move _11, const 5_i32)
14:19-14:32: @7[5]: FakeRead(ForMatchedPlace, _10)"><span class="annotation">@7⦊</span>countdown &lt; 5<span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="15:13-15:33: @12.Call: _12 = might_fail_assert(const 2_u32) -&gt; [return: bb13, unwind: bb17]
14:33-16:10: @13[1]: _6 = const ()"><span class="annotation">@10,12,13⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="15:13-15:33: @12.Call: _12 = might_fail_assert(const 2_u32) -&gt; [return: bb13, unwind: bb17]
14:33-16:10: @13[1]: _6 = const ()"> might_fail_assert(2);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="15:13-15:33: @12.Call: _12 = might_fail_assert(const 2_u32) -&gt; [return: bb13, unwind: bb17]
14:33-16:10: @13[1]: _6 = const ()"> }<span class="annotation">⦉@10,12,13</span></span></span><span><span class="code even" style="--layer: 1" title="16:10-16:10: @11.Goto: goto -&gt; bb14"><span class="annotation">@11⦊</span><span class="annotation">⦉@11</span></span></span><span><span class="code odd" style="--layer: 1" title="16:10-16:10: @14.Goto: goto -&gt; bb15"><span class="annotation">@14⦊</span><span class="annotation">⦉@14</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="17:9-17:23: @15[2]: _13 = CheckedSub(_1, const 1_i32)
17:9-17:23: @16[0]: _1 = move (_13.0: i32)"><span class="annotation">@15,16⦊</span>countdown -= 1<span class="annotation">⦉@15,16</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="19:8-19:10: @4[4]: _15 = ()
19:5-19:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _15)
20:2-20:2: @4.Return: return"><span class="annotation">@4⦊</span>Ok(())</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:8-19:10: @4[4]: _15 = ()
19:5-19:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _15)
20:2-20:2: @4.Return: return">}<span class="annotation">⦉@4</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>assert.might_fail_assert - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 3"><span class="line"><span class="code" style="--layer: 0">fn might_fail_assert(one_plus_one: u32) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="5:14-5:32: @0[6]: _75 = const might_fail_assert::promoted[4]
5:14-5:32: @0[7]: _7 = &amp;(*_75)
5:14-5:32: @0[8]: _6 = &amp;(*_7)
5:14-5:32: @0[9]: _5 = move _6 as &amp;[&amp;str] (Pointer(Unsize))
5:34-5:46: @0[17]: _14 = &amp;_1
5:5-5:48: @0[18]: _13 = (move _14,)
5:5-5:48: @0[20]: FakeRead(ForMatchedPlace, _13)
5:5-5:48: @0[22]: _15 = (_13.0: &amp;u32)
5:5-5:48: @0[25]: _17 = &amp;(*_15)
5:5-5:48: @0[27]: _18 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
5:5-5:48: @0.Call: _16 = ArgumentV1::new::&lt;u32&gt;(move _17, move _18) -&gt; [return: bb1, unwind: bb13]
5:5-5:48: @1[2]: _12 = [move _16]
5:5-5:48: @1[5]: _11 = &amp;_12
5:5-5:48: @1[6]: _10 = &amp;(*_11)
5:5-5:48: @1[7]: _9 = move _10 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
5:5-5:48: @1.Call: _4 = Arguments::new_v1(move _5, move _9) -&gt; [return: bb2, unwind: bb13]
5:5-5:48: @2.Call: _3 = _print(move _4) -&gt; [return: bb3, unwind: bb13]
5:5-5:48: @3[6]: _2 = const ()"><span class="annotation">@0,1,2,3,4⦊</span>println!("does 1 + 1 = {}?", one_plus_one);<span class="annotation">⦉@0,1,2,3,4</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> assert_eq!(</span><span><span class="code even" style="--layer: 1" title="6:16-6:21: @3[11]: _23 = CheckedAdd(const 1_u32, const 1_u32)"><span class="annotation">@0,1,2,3,4⦊</span>1 + 1<span class="annotation">⦉@0,1,2,3,4</span></span></span><span class="code" style="--layer: 0">, one_plus_one, </span><span><span class="code odd" style="--layer: 1" title="6:37-6:61: @7[30]: _72 = const might_fail_assert::promoted[1]
6:37-6:61: @7[31]: _52 = &amp;(*_72)
6:37-6:61: @7[32]: _51 = &amp;(*_52)
6:37-6:61: @7[33]: _50 = move _51 as &amp;[&amp;str] (Pointer(Unsize))"><span class="annotation">@5,7,8,9,10,11,12⦊</span>"the argument was wrong"<span class="annotation">⦉@5,7,8,9,10,11,12</span></span></span><span class="code" style="--layer: 0">);</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="7:2-7:2: @6.Return: return"><span class="annotation">@6⦊</span><span class="annotation">⦉@6</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,89 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-%7Bclosure%230%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.executor-block_on-VTABLE-{closure#0} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 13"><span class="line"> <span class="code" style="--layer: 0">{</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="15:38-15:74: @1[3]: _15 = (move _16,)
15:38-15:74: @1[5]: FakeRead(ForMatchedPlace, _15)
15:38-15:74: @1[7]: _27 = (_15.0: &amp;std::fmt::Arguments)
15:38-15:74: @1[10]: _29 = &amp;(*_27)
15:38-15:74: @1[12]: _30 = &lt;Arguments as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r std::fmt::Arguments, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
15:38-15:74: @1.Call: _28 = ArgumentV1::new::&lt;Arguments&gt;(move _29, move _30) -&gt; [return: bb2, unwind: bb4]
15:38-15:74: @2[2]: _14 = [move _28]
15:38-15:74: @2[5]: _13 = &amp;_14
15:38-15:74: @2[6]: _12 = &amp;(*_13)
15:38-15:74: @2[7]: _11 = move _12 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
15:38-15:74: @2.Call: _6 = Arguments::new_v1(move _7, move _11) -&gt; [return: bb3, unwind: bb4]
15:37-15:74: @3[2]: _5 = &amp;_6
15:37-15:74: @3[3]: _4 = &amp;(*_5)
15:9-15:75: @3.Call: begin_panic_fmt(move _4) -&gt; bb4"><span class="annotation">@0,1,2,3⦊</span>$crate::rt::begin_panic_fmt(&amp;$crate::format_args!($fmt, $($arg)+))<span class="annotation">⦉@0,1,2,3</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span></div>
</body>
</html>

View file

@ -0,0 +1,89 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-%7Bclosure%231%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.executor-block_on-VTABLE-{closure#1} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 13"><span class="line"> <span class="code" style="--layer: 0">{</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="15:38-15:74: @1[3]: _15 = (move _16,)
15:38-15:74: @1[5]: FakeRead(ForMatchedPlace, _15)
15:38-15:74: @1[7]: _27 = (_15.0: &amp;std::fmt::Arguments)
15:38-15:74: @1[10]: _29 = &amp;(*_27)
15:38-15:74: @1[12]: _30 = &lt;Arguments as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r std::fmt::Arguments, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
15:38-15:74: @1.Call: _28 = ArgumentV1::new::&lt;Arguments&gt;(move _29, move _30) -&gt; [return: bb2, unwind: bb4]
15:38-15:74: @2[2]: _14 = [move _28]
15:38-15:74: @2[5]: _13 = &amp;_14
15:38-15:74: @2[6]: _12 = &amp;(*_13)
15:38-15:74: @2[7]: _11 = move _12 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
15:38-15:74: @2.Call: _6 = Arguments::new_v1(move _7, move _11) -&gt; [return: bb3, unwind: bb4]
15:37-15:74: @3[2]: _5 = &amp;_6
15:37-15:74: @3[3]: _4 = &amp;(*_5)
15:9-15:75: @3.Call: begin_panic_fmt(move _4) -&gt; bb4"><span class="annotation">@0,1,2,3⦊</span>$crate::rt::begin_panic_fmt(&amp;$crate::format_args!($fmt, $($arg)+))<span class="annotation">⦉@0,1,2,3</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span></div>
</body>
</html>

View file

@ -0,0 +1,89 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-%7Bclosure%232%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.executor-block_on-VTABLE-{closure#2} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 13"><span class="line"> <span class="code" style="--layer: 0">{</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="15:38-15:74: @1[3]: _15 = (move _16,)
15:38-15:74: @1[5]: FakeRead(ForMatchedPlace, _15)
15:38-15:74: @1[7]: _27 = (_15.0: &amp;std::fmt::Arguments)
15:38-15:74: @1[10]: _29 = &amp;(*_27)
15:38-15:74: @1[12]: _30 = &lt;Arguments as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r std::fmt::Arguments, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
15:38-15:74: @1.Call: _28 = ArgumentV1::new::&lt;Arguments&gt;(move _29, move _30) -&gt; [return: bb2, unwind: bb4]
15:38-15:74: @2[2]: _14 = [move _28]
15:38-15:74: @2[5]: _13 = &amp;_14
15:38-15:74: @2[6]: _12 = &amp;(*_13)
15:38-15:74: @2[7]: _11 = move _12 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
15:38-15:74: @2.Call: _6 = Arguments::new_v1(move _7, move _11) -&gt; [return: bb3, unwind: bb4]
15:37-15:74: @3[2]: _5 = &amp;_6
15:37-15:74: @3[3]: _4 = &amp;(*_5)
15:9-15:75: @3.Call: begin_panic_fmt(move _4) -&gt; bb4"><span class="annotation">@0,1,2,3⦊</span>$crate::rt::begin_panic_fmt(&amp;$crate::format_args!($fmt, $($arg)+))<span class="annotation">⦉@0,1,2,3</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span></div>
</body>
</html>

View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-%7Bclosure%233%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.executor-block_on-VTABLE-{closure#3} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 52"><span class="line"> <span class="code" style="--layer: 0">|_| </span><span><span class="code even" style="--layer: 1" title="53:17-53:19: @0[0]: _0 = ()
53:19-53:19: @0.Return: return"><span class="annotation">@0⦊</span>()<span class="annotation">⦉@0</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,226 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.executor-block_on - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 45"><span class="line"> <span class="code" style="--layer: 0">pub fn block_on&lt;F: Future&gt;(mut future: F) -&gt; F::Output {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"><span class="annotation">@0,1,2,3,4,5⦊</span>mut future = unsafe { Pin::new_unchecked(&amp;mut future) };</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"></span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> static VTABLE: RawWakerVTable = RawWakerVTable::new(</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> |_| unimplemented!("clone"),</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> |_| unimplemented!("wake"),</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> |_| unimplemented!("wake_by_ref"),</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> |_| (),</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> );</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &amp;VTABLE)) };</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="47:54-47:65: @0[2]: _3 = &amp;mut _1
47:35-47:66: @0.Call: _2 = Pin::&lt;&amp;mut F&gt;::new_unchecked(move _3) -&gt; [return: bb1, unwind: bb20]
47:13-47:23: @1[1]: FakeRead(ForLet, _2)
55:60-55:77: @1.Call: _6 = null::&lt;()&gt;() -&gt; [return: bb2, unwind: bb20]
55:80-55:86: @2[3]: _9 = const {alloc0: &amp;RawWakerVTable}
55:79-55:86: @2[4]: _8 = &amp;(*_9)
55:79-55:86: @2[5]: _7 = &amp;(*_8)
55:46-55:87: @2.Call: _5 = RawWaker::new(move _6, move _7) -&gt; [return: bb3, unwind: bb20]
55:30-55:88: @3.Call: _4 = Waker::from_raw(move _5) -&gt; [return: bb4, unwind: bb20]
55:13-55:18: @4[1]: FakeRead(ForLet, _4)
56:47-56:53: @4[7]: _12 = &amp;_4
56:47-56:53: @4[8]: _11 = &amp;(*_12)
56:27-56:54: @4.Call: _10 = Context::from_waker(move _11) -&gt; [return: bb5, unwind: bb19]
56:13-56:24: @5[1]: FakeRead(ForLet, _10)"> let mut context = Context::from_waker(&amp;waker)<span class="annotation">⦉@0,1,2,3,4,5</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> loop {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if let Poll::Ready(</span><span><span class="code odd" style="--layer: 1" title="59:32-59:35: @12[1]: _20 = move ((_14 as Ready).0: &lt;F as std::future::Future&gt;::Output)"><span class="annotation">@10,12,14,15,16,17⦊</span>val<span class="annotation">⦉@10,12,14,15,16,17</span></span></span><span class="code" style="--layer: 0">) = </span><span><span class="code even" style="--layer: 1" title="59:39-59:45: @7[3]: _16 = &amp;mut _2
59:39-59:54: @7.Call: _15 = Pin::&lt;&amp;mut F&gt;::as_mut(move _16) -&gt; [return: bb8, unwind: bb19]
59:60-59:72: @8[3]: _18 = &amp;mut _10
59:60-59:72: @8[4]: _17 = &amp;mut (*_18)
59:39-59:73: @8.Call: _14 = &lt;F as Future&gt;::poll(move _15, move _17) -&gt; [return: bb9, unwind: bb19]
59:39-59:73: @9[2]: FakeRead(ForMatchedPlace, _14)"><span class="annotation">@6,7,8,9⦊</span>future.as_mut().poll(&amp;mut context)<span class="annotation">⦉@6,7,8,9</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> break </span><span><span class="code odd" style="--layer: 1" title="60:23-60:26: @12[2]: _0 = move _20"><span class="annotation">@10,12,14,15,16,17⦊</span>val<span class="annotation">⦉@10,12,14,15,16,17</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code even" style="--layer: 1" title="62:10-62:10: @13.Goto: goto -&gt; bb6"><span class="annotation">@11,13⦊</span><span class="annotation">⦉@11,13</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code odd" style="--layer: 1" title="63:6-63:6: @17.Return: return"><span class="annotation">@10,12,14,15,16,17⦊</span><span class="annotation">⦉@10,12,14,15,16,17</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f-%7Bclosure%230%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.f-{closure#0} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 4"><span class="line"> <span class="code" style="--layer: 0">{ </span><span><span class="code even" style="--layer: 1" title="5:22-5:23: @0[0]: _0 = const 1_u8
5:25-5:25: @0.Return: return"><span class="annotation">@0⦊</span>1 }<span class="annotation">⦉@0</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,74 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.f - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 4"><span class="line"><span class="code" style="--layer: 0">async fn f() -&gt; u8 { 1 }</span><span><span class="code even" style="--layer: 1" title="5:25-5:25: @1.Return: return"><span class="annotation">@0,1⦊</span><span class="annotation">⦉@0,1</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo-%7Bclosure%230%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.foo-{closure#0} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 6"><span class="line"> <span class="code" style="--layer: 0">{ </span><span><span class="code even" style="--layer: 1" title="7:32-7:43: @0[0]: _0 = [const false; 10]
7:45-7:45: @0.Return: return"><span class="annotation">@0⦊</span>[false; 10] }<span class="annotation">⦉@0</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,74 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.foo - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 6"><span class="line"><span class="code" style="--layer: 0">async fn foo() -&gt; [bool; 10] { [false; 10] }</span><span><span class="code even" style="--layer: 1" title="7:45-7:45: @1.Return: return"><span class="annotation">@0,1⦊</span><span class="annotation">⦉@0,1</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,80 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g-%7Bclosure%230%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.g-{closure#0} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 8"><span class="line"> <span><span class="code even" style="--layer: 1" title="10:11-10:12: @0[3]: FakeRead(ForMatchedPlace, _3)"><span class="annotation">@0,2,3⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="10:11-10:12: @0[3]: FakeRead(ForMatchedPlace, _3)"> match x<span class="annotation">⦉@0,2,3</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="11:9-11:10: @16[3]: _4 = _3"><span class="annotation">@16⦊</span>y<span class="annotation">⦉@16</span></span></span><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="11:14-11:17: @2.Call: _8 = f() -&gt; [return: bb3, unwind: bb30]
11:14-11:17: @3[0]: FakeRead(ForMatchedPlace, _8)"><span class="annotation">@0,2,3⦊</span>f()<span class="annotation">⦉@0,2,3</span></span></span><span class="code" style="--layer: 0">.await == </span><span><span class="code odd" style="--layer: 1" title="11:27-11:28: @14[2]: _24 = (*_5)"><span class="annotation">@9,12,14,15⦊</span>y<span class="annotation">⦉@9,12,14,15</span></span></span><span><span class="code even" style="--layer: 1" title="11:28-11:28: @17.Goto: goto -&gt; bb1"><span class="annotation">@17⦊</span><span class="annotation">⦉@17</span></span></span><span class="code" style="--layer: 0"> =&gt; </span><span><span class="code odd" style="--layer: 1" title="11:32-11:34: @16[4]: _0 = ()"><span class="annotation">@16⦊</span>()<span class="annotation">⦉@16</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="12:14-12:16: @1[0]: _0 = ()"><span class="annotation">@1⦊</span>()<span class="annotation">⦉@1</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="14:2-14:2: @19.Return: return"><span class="annotation">@18,19⦊</span><span class="annotation">⦉@18,19</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.g - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 8"><span class="line"><span class="code" style="--layer: 0">pub async fn g(x: u8) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> match x {</span></span>
<span class="line"><span class="code" style="--layer: 0"> y if f().await == y =&gt; (),</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; (),</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="14:2-14:2: @1.Return: return"><span class="annotation">@0,1⦊</span><span class="annotation">⦉@0,1</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,80 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h-%7Bclosure%230%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.h-{closure#0} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 17"><span class="line"> <span><span class="code even" style="--layer: 1" title="19:11-19:12: @0[3]: FakeRead(ForMatchedPlace, _3)"><span class="annotation">@0,2,3⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="19:11-19:12: @0[3]: FakeRead(ForMatchedPlace, _3)"> match x<span class="annotation">⦉@0,2,3</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="20:9-20:10: @17[3]: _4 = _3"><span class="annotation">@17⦊</span>y<span class="annotation">⦉@17</span></span></span><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="20:14-20:19: @2.Call: _8 = foo() -&gt; [return: bb3, unwind: bb33]
20:14-20:19: @3[0]: FakeRead(ForMatchedPlace, _8)"><span class="annotation">@0,2,3⦊</span>foo()<span class="annotation">⦉@0,2,3</span></span></span><span class="code" style="--layer: 0">.await[</span><span><span class="code odd" style="--layer: 1" title="20:26-20:27: @14[2]: _24 = (*_5)"><span class="annotation">@9,12,14,15,16⦊</span>y<span class="annotation">⦉@9,12,14,15,16</span></span></span><span class="code" style="--layer: 0">]</span><span><span class="code even" style="--layer: 1" title="20:28-20:28: @18.Goto: goto -&gt; bb1"><span class="annotation">@18⦊</span><span class="annotation">⦉@18</span></span></span><span class="code" style="--layer: 0"> =&gt; </span><span><span class="code odd" style="--layer: 1" title="20:32-20:34: @17[4]: _0 = ()"><span class="annotation">@17⦊</span>()<span class="annotation">⦉@17</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="21:14-21:16: @1[0]: _0 = ()"><span class="annotation">@1⦊</span>()<span class="annotation">⦉@1</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="23:2-23:2: @20.Return: return"><span class="annotation">@19,20⦊</span><span class="annotation">⦉@19,20</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.h - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 17"><span class="line"><span class="code" style="--layer: 0">async fn h(x: usize) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> match x {</span></span>
<span class="line"><span class="code" style="--layer: 0"> y if foo().await[y] =&gt; (),</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; (),</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="23:2-23:2: @1.Return: return"><span class="annotation">@0,1⦊</span><span class="annotation">⦉@0,1</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,82 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i-%7Bclosure%230%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.i-{closure#0} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 24"><span class="line"> <span><span class="code even" style="--layer: 1" title="26:11-26:12: @0[3]: FakeRead(ForMatchedPlace, _3)"><span class="annotation">@0,2,3⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="26:11-26:12: @0[3]: FakeRead(ForMatchedPlace, _3)"> match x<span class="annotation">⦉@0,2,3</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="27:9-27:10: @17[3]: _4 = _3"><span class="annotation">@17⦊</span>y<span class="annotation">⦉@17</span></span></span><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="27:14-27:17: @2.Call: _8 = f() -&gt; [return: bb3, unwind: bb33]
27:14-27:17: @3[0]: FakeRead(ForMatchedPlace, _8)"><span class="annotation">@0,2,3⦊</span>f()<span class="annotation">⦉@0,2,3</span></span></span><span class="code" style="--layer: 0">.await == </span><span><span class="code odd" style="--layer: 1" title="27:27-27:28: @14[3]: _25 = (*_5)
27:27-27:32: @14[4]: _26 = CheckedAdd(_25, const 1_u8)
27:27-27:32: @15[0]: _24 = move (_26.0: u8)"><span class="annotation">@9,12,14,15,16⦊</span>y + 1<span class="annotation">⦉@9,12,14,15,16</span></span></span><span><span class="code even" style="--layer: 1" title="27:32-27:32: @18.Goto: goto -&gt; bb1"><span class="annotation">@18⦊</span><span class="annotation">⦉@18</span></span></span><span class="code" style="--layer: 0"> =&gt; </span><span><span class="code odd" style="--layer: 1" title="27:36-27:38: @17[4]: _0 = ()"><span class="annotation">@17⦊</span>()<span class="annotation">⦉@17</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="28:14-28:16: @1[0]: _0 = ()"><span class="annotation">@1⦊</span>()<span class="annotation">⦉@1</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="30:2-30:2: @20.Return: return"><span class="annotation">@19,20⦊</span><span class="annotation">⦉@19,20</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.i - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 24"><span class="line"><span class="code" style="--layer: 0">async fn i(x: u8) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> match x {</span></span>
<span class="line"><span class="code" style="--layer: 0"> y if f().await == y + 1 =&gt; (),</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; (),</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="30:2-30:2: @1.Return: return"><span class="annotation">@0,1⦊</span><span class="annotation">⦉@0,1</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,133 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>async.main - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 31"><span class="line"><span class="code" style="--layer: 0">fn main() </span><span><span class="code even" style="--layer: 1" title="33:13-33:18: @0.Call: _1 = g(const 10_u8) -&gt; [return: bb1, unwind: bb12]
34:13-34:17: @2.Call: _2 = h(const 9_usize) -&gt; [return: bb3, unwind: bb12]
35:31-35:35: @4.Call: _4 = i(const 8_u8) -&gt; [return: bb5, unwind: bb12]
35:22-35:36: @5.Call: _3 = Box::&lt;impl Future&gt;::pin(move _4) -&gt; [return: bb6, unwind: bb11]
35:9-35:19: @6[1]: FakeRead(ForLet, _3)
36:24-36:30: @6[5]: _7 = &amp;mut _3
36:24-36:39: @6.Call: _6 = Pin::&lt;Box&lt;impl Future&gt;&gt;::as_mut(move _7) -&gt; [return: bb7, unwind: bb10]
36:5-36:40: @7.Call: _5 = block_on::&lt;Pin&lt;&amp;mut impl Future&gt;&gt;(move _6) -&gt; [return: bb8, unwind: bb10]
32:11-37:2: @8[2]: _0 = const ()
37:2-37:2: @9.Return: return"><span class="annotation">@0,1,2,3,4,5,6,7,8,9⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="33:13-33:18: @0.Call: _1 = g(const 10_u8) -&gt; [return: bb1, unwind: bb12]
34:13-34:17: @2.Call: _2 = h(const 9_usize) -&gt; [return: bb3, unwind: bb12]
35:31-35:35: @4.Call: _4 = i(const 8_u8) -&gt; [return: bb5, unwind: bb12]
35:22-35:36: @5.Call: _3 = Box::&lt;impl Future&gt;::pin(move _4) -&gt; [return: bb6, unwind: bb11]
35:9-35:19: @6[1]: FakeRead(ForLet, _3)
36:24-36:30: @6[5]: _7 = &amp;mut _3
36:24-36:39: @6.Call: _6 = Pin::&lt;Box&lt;impl Future&gt;&gt;::as_mut(move _7) -&gt; [return: bb7, unwind: bb10]
36:5-36:40: @7.Call: _5 = block_on::&lt;Pin&lt;&amp;mut impl Future&gt;&gt;(move _6) -&gt; [return: bb8, unwind: bb10]
32:11-37:2: @8[2]: _0 = const ()
37:2-37:2: @9.Return: return"> let _ = g(10);</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="33:13-33:18: @0.Call: _1 = g(const 10_u8) -&gt; [return: bb1, unwind: bb12]
34:13-34:17: @2.Call: _2 = h(const 9_usize) -&gt; [return: bb3, unwind: bb12]
35:31-35:35: @4.Call: _4 = i(const 8_u8) -&gt; [return: bb5, unwind: bb12]
35:22-35:36: @5.Call: _3 = Box::&lt;impl Future&gt;::pin(move _4) -&gt; [return: bb6, unwind: bb11]
35:9-35:19: @6[1]: FakeRead(ForLet, _3)
36:24-36:30: @6[5]: _7 = &amp;mut _3
36:24-36:39: @6.Call: _6 = Pin::&lt;Box&lt;impl Future&gt;&gt;::as_mut(move _7) -&gt; [return: bb7, unwind: bb10]
36:5-36:40: @7.Call: _5 = block_on::&lt;Pin&lt;&amp;mut impl Future&gt;&gt;(move _6) -&gt; [return: bb8, unwind: bb10]
32:11-37:2: @8[2]: _0 = const ()
37:2-37:2: @9.Return: return"> let _ = h(9);</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="33:13-33:18: @0.Call: _1 = g(const 10_u8) -&gt; [return: bb1, unwind: bb12]
34:13-34:17: @2.Call: _2 = h(const 9_usize) -&gt; [return: bb3, unwind: bb12]
35:31-35:35: @4.Call: _4 = i(const 8_u8) -&gt; [return: bb5, unwind: bb12]
35:22-35:36: @5.Call: _3 = Box::&lt;impl Future&gt;::pin(move _4) -&gt; [return: bb6, unwind: bb11]
35:9-35:19: @6[1]: FakeRead(ForLet, _3)
36:24-36:30: @6[5]: _7 = &amp;mut _3
36:24-36:39: @6.Call: _6 = Pin::&lt;Box&lt;impl Future&gt;&gt;::as_mut(move _7) -&gt; [return: bb7, unwind: bb10]
36:5-36:40: @7.Call: _5 = block_on::&lt;Pin&lt;&amp;mut impl Future&gt;&gt;(move _6) -&gt; [return: bb8, unwind: bb10]
32:11-37:2: @8[2]: _0 = const ()
37:2-37:2: @9.Return: return"> let mut future = Box::pin(i(8));</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="33:13-33:18: @0.Call: _1 = g(const 10_u8) -&gt; [return: bb1, unwind: bb12]
34:13-34:17: @2.Call: _2 = h(const 9_usize) -&gt; [return: bb3, unwind: bb12]
35:31-35:35: @4.Call: _4 = i(const 8_u8) -&gt; [return: bb5, unwind: bb12]
35:22-35:36: @5.Call: _3 = Box::&lt;impl Future&gt;::pin(move _4) -&gt; [return: bb6, unwind: bb11]
35:9-35:19: @6[1]: FakeRead(ForLet, _3)
36:24-36:30: @6[5]: _7 = &amp;mut _3
36:24-36:39: @6.Call: _6 = Pin::&lt;Box&lt;impl Future&gt;&gt;::as_mut(move _7) -&gt; [return: bb7, unwind: bb10]
36:5-36:40: @7.Call: _5 = block_on::&lt;Pin&lt;&amp;mut impl Future&gt;&gt;(move _6) -&gt; [return: bb8, unwind: bb10]
32:11-37:2: @8[2]: _0 = const ()
37:2-37:2: @9.Return: return"> executor::block_on(future.as_mut());</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="33:13-33:18: @0.Call: _1 = g(const 10_u8) -&gt; [return: bb1, unwind: bb12]
34:13-34:17: @2.Call: _2 = h(const 9_usize) -&gt; [return: bb3, unwind: bb12]
35:31-35:35: @4.Call: _4 = i(const 8_u8) -&gt; [return: bb5, unwind: bb12]
35:22-35:36: @5.Call: _3 = Box::&lt;impl Future&gt;::pin(move _4) -&gt; [return: bb6, unwind: bb11]
35:9-35:19: @6[1]: FakeRead(ForLet, _3)
36:24-36:30: @6[5]: _7 = &amp;mut _3
36:24-36:39: @6.Call: _6 = Pin::&lt;Box&lt;impl Future&gt;&gt;::as_mut(move _7) -&gt; [return: bb7, unwind: bb10]
36:5-36:40: @7.Call: _5 = block_on::&lt;Pin&lt;&amp;mut impl Future&gt;&gt;(move _6) -&gt; [return: bb8, unwind: bb10]
32:11-37:2: @8[2]: _0 = const ()
37:2-37:2: @9.Return: return">}<span class="annotation">⦉@0,1,2,3,4,5,6,7,8,9</span></span></span></span></div>
</body>
</html>

View file

@ -87,10 +87,12 @@ For revisions in Pull Requests (PR):
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="10:9-10:10: @25[0]: FakeRead(ForLet, _4)"><span class="annotation">@25⦊</span>x<span class="annotation">⦉@25</span></span></span><span class="code" style="--layer: 0"> = if </span><span><span class="code even" style="--layer: 1" title="10:16-10:25: @4[5]: _6 = _1
10:16-10:29: @4[6]: _5 = Gt(move _6, const 7_u32)
10:16-10:29: @4[8]: FakeRead(ForMatchedPlace, _5)"><span class="annotation">@4⦊</span>countdown &gt; 7<span class="annotation">⦉@4</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="11:9-11:23: @8[0]: _1 = move (_7.0: u32)
12:9-12:10: @8[1]: _4 = const B"><span class="annotation">@8⦊</span>countdown -= 4;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="11:9-11:23: @8[0]: _1 = move (_7.0: u32)
12:9-12:10: @8[1]: _4 = const B"> B<span class="annotation">⦉@8</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="11:9-11:23: @7[0]: _7 = CheckedSub(_1, const 4_u32)
11:9-11:23: @8[0]: _1 = move (_7.0: u32)
12:9-12:10: @8[1]: _4 = const B"><span class="annotation">@5,7,8⦊</span>countdown -= 4;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="11:9-11:23: @7[0]: _7 = CheckedSub(_1, const 4_u32)
11:9-11:23: @8[0]: _1 = move (_7.0: u32)
12:9-12:10: @8[1]: _4 = const B"> B<span class="annotation">⦉@5,7,8</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> } else if </span><span><span class="code even" style="--layer: 1" title="13:15-13:24: @6[2]: _9 = _1
13:15-13:28: @6[3]: _8 = Gt(move _9, const 2_u32)
13:15-13:28: @6[5]: FakeRead(ForMatchedPlace, _8)"><span class="annotation">@6⦊</span>countdown &gt; 2<span class="annotation">⦉@6</span></span></span><span class="code" style="--layer: 0"> {</span></span>
@ -106,10 +108,12 @@ For revisions in Pull Requests (PR):
<span class="line"><span class="code even" style="--layer: 1" title="15:13-15:26: @22[0]: _1 = const 0_u32
14:61-16:10: @22[1]: _10 = const ()
16:10-16:10: @22.Goto: goto -&gt; bb23"> }<span class="annotation">⦉@20,22</span></span></span><span><span class="code odd" style="--layer: 1" title="16:10-16:10: @21.Goto: goto -&gt; bb23"><span class="annotation">@21⦊</span><span class="annotation">⦉@21</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="17:9-17:23: @24[0]: _1 = move (_19.0: u32)
18:9-18:18: @24[1]: _4 = _1"><span class="annotation">@24⦊</span>countdown -= 5;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="17:9-17:23: @24[0]: _1 = move (_19.0: u32)
18:9-18:18: @24[1]: _4 = _1"> countdown<span class="annotation">⦉@24</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="17:9-17:23: @23[2]: _19 = CheckedSub(_1, const 5_u32)
17:9-17:23: @24[0]: _1 = move (_19.0: u32)
18:9-18:18: @24[1]: _4 = _1"><span class="annotation">@23,24⦊</span>countdown -= 5;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="17:9-17:23: @23[2]: _19 = CheckedSub(_1, const 5_u32)
17:9-17:23: @24[0]: _1 = move (_19.0: u32)
18:9-18:18: @24[1]: _4 = _1"> countdown<span class="annotation">⦉@23,24</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> } else {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="20:9-20:15: @10[0]: _0 = const ()"><span class="annotation">@10⦊</span>return<span class="annotation">⦉@10</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> };</span></span>
@ -129,9 +133,15 @@ For revisions in Pull Requests (PR):
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="28:8-28:17: @29[5]: _26 = _21
28:8-28:21: @29[6]: _25 = Gt(move _26, const 7_i32)
28:8-28:21: @29[8]: FakeRead(ForMatchedPlace, _25)"><span class="annotation">@29⦊</span>countdown &gt; 7<span class="annotation">⦉@29</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="29:9-29:23: @33[0]: _21 = move (_27.0: i32)"><span class="annotation">@33⦊</span>countdown -= 4<span class="annotation">⦉@33</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else if </span><span><span class="code odd" style="--layer: 1" title="30:15-30:24: @31[2]: _29 = _21
28:8-28:21: @29[8]: FakeRead(ForMatchedPlace, _25)"><span class="annotation">@29⦊</span>countdown &gt; 7<span class="annotation">⦉@29</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="29:9-29:23: @32[0]: _27 = CheckedSub(_21, const 4_i32)
29:9-29:23: @33[0]: _21 = move (_27.0: i32)
28:22-30:6: @33[1]: _24 = const ()"><span class="annotation">@30,32,33⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="29:9-29:23: @32[0]: _27 = CheckedSub(_21, const 4_i32)
29:9-29:23: @33[0]: _21 = move (_27.0: i32)
28:22-30:6: @33[1]: _24 = const ()"> countdown -= 4;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="29:9-29:23: @32[0]: _27 = CheckedSub(_21, const 4_i32)
29:9-29:23: @33[0]: _21 = move (_27.0: i32)
28:22-30:6: @33[1]: _24 = const ()"> }<span class="annotation">⦉@30,32,33</span></span></span><span class="code" style="--layer: 0"> else if </span><span><span class="code odd" style="--layer: 1" title="30:15-30:24: @31[2]: _29 = _21
30:15-30:28: @31[3]: _28 = Gt(move _29, const 2_i32)
30:15-30:28: @31[5]: FakeRead(ForMatchedPlace, _28)"><span class="annotation">@31⦊</span>countdown &gt; 2<span class="annotation">⦉@31</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="31:12-31:21: @36[5]: _34 = _21
@ -146,118 +156,198 @@ For revisions in Pull Requests (PR):
<span class="line"><span class="code odd" style="--layer: 1" title="32:13-32:26: @47[0]: _21 = const 0_i32
31:61-33:10: @47[1]: _30 = const ()
33:10-33:10: @47.Goto: goto -&gt; bb48"> }<span class="annotation">⦉@45,47</span></span></span><span><span class="code even" style="--layer: 1" title="33:10-33:10: @46.Goto: goto -&gt; bb48"><span class="annotation">@46⦊</span><span class="annotation">⦉@46</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="34:9-34:23: @49[0]: _21 = move (_39.0: i32)"><span class="annotation">@49⦊</span>countdown -= 5<span class="annotation">⦉@49</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="34:9-34:23: @48[2]: _39 = CheckedSub(_21, const 5_i32)
34:9-34:23: @49[0]: _21 = move (_39.0: i32)"><span class="annotation">@48,49⦊</span>countdown -= 5<span class="annotation">⦉@48,49</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="36:9-36:15: @35[0]: _0 = const ()"><span class="annotation">@35⦊</span>return<span class="annotation">⦉@35</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="39:25-39:26: @50[3]: _41 = const 0_i32
39:9-39:22: @50[4]: FakeRead(ForLet, _41)"><span class="annotation">@50⦊</span>mut countdown = 0<span class="annotation">⦉@50</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="40:8-40:12: @50[7]: _43 = const true
40:8-40:12: @50[8]: FakeRead(ForMatchedPlace, _43)"><span class="annotation">@50⦊</span>true<span class="annotation">⦉@50</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="41:9-41:22: @53[0]: _41 = const 1_i32
40:13-42:6: @53[1]: _42 = const ()
42:6-42:6: @53.Goto: goto -&gt; bb54"><span class="annotation">@51,53⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="41:9-41:22: @53[0]: _41 = const 1_i32
40:13-42:6: @53[1]: _42 = const ()
42:6-42:6: @53.Goto: goto -&gt; bb54"> countdown = 1;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="41:9-41:22: @53[0]: _41 = const 1_i32
40:13-42:6: @53[1]: _42 = const ()
42:6-42:6: @53.Goto: goto -&gt; bb54"> }<span class="annotation">⦉@51,53</span></span></span><span><span class="code odd" style="--layer: 1" title="42:6-42:6: @52.Goto: goto -&gt; bb54"><span class="annotation">@52⦊</span><span class="annotation">⦉@52</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="39:8-39:12: @50[4]: _42 = const true
39:8-39:12: @50[5]: FakeRead(ForMatchedPlace, _42)"><span class="annotation">@50⦊</span>true<span class="annotation">⦉@50</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no</span></span>
<span class="line"><span class="code" style="--layer: 0"> // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region,</span></span>
<span class="line"><span class="code" style="--layer: 0"> // for the executed `then` block above, to include the closing brace on line 30. That</span></span>
<span class="line"><span class="code" style="--layer: 0"> // changed the line count, but the coverage code region (for the `else if` condition) is</span></span>
<span class="line"><span class="code" style="--layer: 0"> // still valid.</span></span>
<span class="line"><span class="code" style="--layer: 0"> //</span></span>
<span class="line"><span class="code" style="--layer: 0"> // Note that `if` (then) and `else` blocks include the closing brace in their coverage</span></span>
<span class="line"><span class="code" style="--layer: 0"> // code regions when the last line in the block ends in a semicolon, because the Rust</span></span>
<span class="line"><span class="code" style="--layer: 0"> // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the</span></span>
<span class="line"><span class="code" style="--layer: 0"> // empty value for the executed block. When the last line does not end in a semicolon</span></span>
<span class="line"><span class="code" style="--layer: 0"> // (that is, when the block actually results in a value), the additional `Assign` is not</span></span>
<span class="line"><span class="code" style="--layer: 0"> // generated, and the brace is not included.</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="52:29-52:30: @53[1]: _43 = const 0_i32
52:13-52:26: @53[2]: FakeRead(ForLet, _43)"><span class="annotation">@51,53⦊</span>mut countdown = 0<span class="annotation">⦉@51,53</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="53:12-53:16: @53[5]: _45 = const true
53:12-53:16: @53[6]: FakeRead(ForMatchedPlace, _45)"><span class="annotation">@51,53⦊</span>true<span class="annotation">⦉@51,53</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="54:13-54:27: @56[0]: _43 = const 10_i32
53:17-55:10: @56[1]: _44 = const ()
55:10-55:10: @56.Goto: goto -&gt; bb57"><span class="annotation">@54,56⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="54:13-54:27: @56[0]: _43 = const 10_i32
53:17-55:10: @56[1]: _44 = const ()
55:10-55:10: @56.Goto: goto -&gt; bb57"> countdown = 10;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="54:13-54:27: @56[0]: _43 = const 10_i32
53:17-55:10: @56[1]: _44 = const ()
55:10-55:10: @56.Goto: goto -&gt; bb57"> }<span class="annotation">⦉@54,56</span></span></span><span><span class="code even" style="--layer: 1" title="55:10-55:10: @55.Goto: goto -&gt; bb57"><span class="annotation">@55⦊</span><span class="annotation">⦉@55</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="44:9-44:10: @77[0]: FakeRead(ForLet, _44)"><span class="annotation">@77⦊</span>z<span class="annotation">⦉@77</span></span></span><span class="code" style="--layer: 0"> = if </span><span><span class="code odd" style="--layer: 1" title="44:16-44:25: @54[5]: _46 = _41
44:16-44:29: @54[6]: _45 = Gt(move _46, const 7_i32)
44:16-44:29: @54[8]: FakeRead(ForMatchedPlace, _45)"><span class="annotation">@54⦊</span>countdown &gt; 7<span class="annotation">⦉@54</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="45:9-45:23: @58[0]: _41 = move (_47.0: i32)"><span class="annotation">@58⦊</span>countdown -= 4<span class="annotation">⦉@58</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else if </span><span><span class="code odd" style="--layer: 1" title="46:15-46:24: @56[2]: _49 = _41
46:15-46:28: @56[3]: _48 = Gt(move _49, const 2_i32)
46:15-46:28: @56[5]: FakeRead(ForMatchedPlace, _48)"><span class="annotation">@56⦊</span>countdown &gt; 2<span class="annotation">⦉@56</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="47:12-47:21: @61[5]: _54 = _41
47:12-47:25: @61[6]: _53 = Lt(move _54, const 1_i32)"><span class="annotation">@59,61⦊</span>countdown &lt; 1<span class="annotation">⦉@59,61</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code odd" style="--layer: 1" title="47:29-47:38: @68[2]: _56 = _41
47:29-47:42: @68[3]: _55 = Gt(move _56, const 5_i32)"><span class="annotation">@68⦊</span>countdown &gt; 5<span class="annotation">⦉@68</span></span></span><span><span class="code even" style="--layer: 1" title="47:42-47:42: @66.Goto: goto -&gt; bb69"><span class="annotation">@66⦊</span><span class="annotation">⦉@66</span></span></span><span><span class="code odd" style="--layer: 1" title="47:42-47:42: @67.Goto: goto -&gt; bb69"><span class="annotation">@67⦊</span><span class="annotation">⦉@67</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code even" style="--layer: 1" title="47:46-47:55: @64[2]: _58 = _41
47:46-47:60: @64[3]: _57 = Ne(move _58, const 9_i32)"><span class="annotation">@64⦊</span>countdown != 9<span class="annotation">⦉@64</span></span></span><span><span class="code odd" style="--layer: 1" title="47:60-47:60: @62.Goto: goto -&gt; bb65"><span class="annotation">@62⦊</span><span class="annotation">⦉@62</span></span></span><span><span class="code even" style="--layer: 1" title="47:60-47:60: @63.Goto: goto -&gt; bb65"><span class="annotation">@63⦊</span><span class="annotation">⦉@63</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="48:13-48:26: @72[0]: _41 = const 0_i32
47:61-49:10: @72[1]: _50 = const ()
49:10-49:10: @72.Goto: goto -&gt; bb73"><span class="annotation">@70,72⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="48:13-48:26: @72[0]: _41 = const 0_i32
47:61-49:10: @72[1]: _50 = const ()
49:10-49:10: @72.Goto: goto -&gt; bb73"> countdown = 0;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="48:13-48:26: @72[0]: _41 = const 0_i32
47:61-49:10: @72[1]: _50 = const ()
49:10-49:10: @72.Goto: goto -&gt; bb73"> }<span class="annotation">⦉@70,72</span></span></span><span><span class="code even" style="--layer: 1" title="49:10-49:10: @71.Goto: goto -&gt; bb73"><span class="annotation">@71⦊</span><span class="annotation">⦉@71</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="50:9-50:23: @74[0]: _41 = move (_59.0: i32)"><span class="annotation">@74⦊</span>countdown -= 5<span class="annotation">⦉@74</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="57:12-57:21: @57[4]: _47 = _43
57:12-57:25: @57[5]: _46 = Gt(move _47, const 7_i32)
57:12-57:25: @57[7]: FakeRead(ForMatchedPlace, _46)"><span class="annotation">@57⦊</span>countdown &gt; 7<span class="annotation">⦉@57</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="58:13-58:27: @60[0]: _48 = CheckedSub(_43, const 4_i32)
58:13-58:27: @61[0]: _43 = move (_48.0: i32)
57:26-59:10: @61[1]: _41 = const ()"><span class="annotation">@58,60,61⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="58:13-58:27: @60[0]: _48 = CheckedSub(_43, const 4_i32)
58:13-58:27: @61[0]: _43 = move (_48.0: i32)
57:26-59:10: @61[1]: _41 = const ()"> countdown -= 4;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="58:13-58:27: @60[0]: _48 = CheckedSub(_43, const 4_i32)
58:13-58:27: @61[0]: _43 = move (_48.0: i32)
57:26-59:10: @61[1]: _41 = const ()"> }<span class="annotation">⦉@58,60,61</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> // The closing brace of the `then` branch is now included in the coverage region, and shown</span></span>
<span class="line"><span class="code" style="--layer: 0"> // as "executed" (giving its line a count of 1 here). Since, in the original version above,</span></span>
<span class="line"><span class="code" style="--layer: 0"> // the closing brace shares the same line as the `else if` conditional expression (which is</span></span>
<span class="line"><span class="code" style="--layer: 0"> // not executed if the first `then` condition is true), only the condition's code region is</span></span>
<span class="line"><span class="code" style="--layer: 0"> // marked with a count of 0 now.</span></span>
<span class="line"><span class="code" style="--layer: 0"> else if </span><span><span class="code odd" style="--layer: 1" title="65:17-65:26: @59[2]: _50 = _43
65:17-65:30: @59[3]: _49 = Gt(move _50, const 2_i32)
65:17-65:30: @59[5]: FakeRead(ForMatchedPlace, _49)"><span class="annotation">@59⦊</span>countdown &gt; 2<span class="annotation">⦉@59</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="66:16-66:25: @64[5]: _55 = _43
66:16-66:29: @64[6]: _54 = Lt(move _55, const 1_i32)"><span class="annotation">@62,64⦊</span>countdown &lt; 1<span class="annotation">⦉@62,64</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code odd" style="--layer: 1" title="66:33-66:42: @71[2]: _57 = _43
66:33-66:46: @71[3]: _56 = Gt(move _57, const 5_i32)"><span class="annotation">@71⦊</span>countdown &gt; 5<span class="annotation">⦉@71</span></span></span><span><span class="code even" style="--layer: 1" title="66:46-66:46: @69.Goto: goto -&gt; bb72"><span class="annotation">@69⦊</span><span class="annotation">⦉@69</span></span></span><span><span class="code odd" style="--layer: 1" title="66:46-66:46: @70.Goto: goto -&gt; bb72"><span class="annotation">@70⦊</span><span class="annotation">⦉@70</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code even" style="--layer: 1" title="66:50-66:59: @67[2]: _59 = _43
66:50-66:64: @67[3]: _58 = Ne(move _59, const 9_i32)"><span class="annotation">@67⦊</span>countdown != 9<span class="annotation">⦉@67</span></span></span><span><span class="code odd" style="--layer: 1" title="66:64-66:64: @65.Goto: goto -&gt; bb68"><span class="annotation">@65⦊</span><span class="annotation">⦉@65</span></span></span><span><span class="code even" style="--layer: 1" title="66:64-66:64: @66.Goto: goto -&gt; bb68"><span class="annotation">@66⦊</span><span class="annotation">⦉@66</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="67:17-67:30: @75[0]: _43 = const 0_i32
66:65-68:14: @75[1]: _51 = const ()
68:14-68:14: @75.Goto: goto -&gt; bb76"><span class="annotation">@73,75⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="67:17-67:30: @75[0]: _43 = const 0_i32
66:65-68:14: @75[1]: _51 = const ()
68:14-68:14: @75.Goto: goto -&gt; bb76"> countdown = 0;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="67:17-67:30: @75[0]: _43 = const 0_i32
66:65-68:14: @75[1]: _51 = const ()
68:14-68:14: @75.Goto: goto -&gt; bb76"> }<span class="annotation">⦉@73,75</span></span></span><span><span class="code even" style="--layer: 1" title="68:14-68:14: @74.Goto: goto -&gt; bb76"><span class="annotation">@74⦊</span><span class="annotation">⦉@74</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="69:13-69:27: @76[2]: _60 = CheckedSub(_43, const 5_i32)
69:13-69:27: @77[0]: _43 = move (_60.0: i32)"><span class="annotation">@76,77⦊</span>countdown -= 5<span class="annotation">⦉@76,77</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="71:13-71:19: @63[0]: _0 = const ()"><span class="annotation">@63⦊</span>return<span class="annotation">⦉@63</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code odd" style="--layer: 1" title="73:6-73:6: @78.Goto: goto -&gt; bb79"><span class="annotation">@78⦊</span><span class="annotation">⦉@78</span></span></span><span><span class="code even" style="--layer: 1" title="73:6-73:6: @52.Goto: goto -&gt; bb79"><span class="annotation">@52⦊</span><span class="annotation">⦉@52</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="75:25-75:26: @79[3]: _62 = const 0_i32
75:9-75:22: @79[4]: FakeRead(ForLet, _62)"><span class="annotation">@79⦊</span>mut countdown = 0<span class="annotation">⦉@79</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="76:8-76:12: @79[7]: _64 = const true
76:8-76:12: @79[8]: FakeRead(ForMatchedPlace, _64)"><span class="annotation">@79⦊</span>true<span class="annotation">⦉@79</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="77:9-77:22: @82[0]: _62 = const 1_i32
76:13-78:6: @82[1]: _63 = const ()
78:6-78:6: @82.Goto: goto -&gt; bb83"><span class="annotation">@80,82⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="77:9-77:22: @82[0]: _62 = const 1_i32
76:13-78:6: @82[1]: _63 = const ()
78:6-78:6: @82.Goto: goto -&gt; bb83"> countdown = 1;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="77:9-77:22: @82[0]: _62 = const 1_i32
76:13-78:6: @82[1]: _63 = const ()
78:6-78:6: @82.Goto: goto -&gt; bb83"> }<span class="annotation">⦉@80,82</span></span></span><span><span class="code odd" style="--layer: 1" title="78:6-78:6: @81.Goto: goto -&gt; bb83"><span class="annotation">@81⦊</span><span class="annotation">⦉@81</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="80:9-80:10: @106[0]: FakeRead(ForLet, _65)"><span class="annotation">@106⦊</span>z<span class="annotation">⦉@106</span></span></span><span class="code" style="--layer: 0"> = if </span><span><span class="code odd" style="--layer: 1" title="80:16-80:25: @83[5]: _67 = _62
80:16-80:29: @83[6]: _66 = Gt(move _67, const 7_i32)
80:16-80:29: @83[8]: FakeRead(ForMatchedPlace, _66)"><span class="annotation">@83⦊</span>countdown &gt; 7<span class="annotation">⦉@83</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="81:9-81:23: @86[0]: _68 = CheckedSub(_62, const 4_i32)
81:9-81:23: @87[0]: _62 = move (_68.0: i32)
80:30-82:6: @87[1]: _65 = const ()"><span class="annotation">@84,86,87⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="81:9-81:23: @86[0]: _68 = CheckedSub(_62, const 4_i32)
81:9-81:23: @87[0]: _62 = move (_68.0: i32)
80:30-82:6: @87[1]: _65 = const ()"> countdown -= 4;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="81:9-81:23: @86[0]: _68 = CheckedSub(_62, const 4_i32)
81:9-81:23: @87[0]: _62 = move (_68.0: i32)
80:30-82:6: @87[1]: _65 = const ()"> }<span class="annotation">⦉@84,86,87</span></span></span><span class="code" style="--layer: 0"> else if </span><span><span class="code odd" style="--layer: 1" title="82:15-82:24: @85[2]: _70 = _62
82:15-82:28: @85[3]: _69 = Gt(move _70, const 2_i32)
82:15-82:28: @85[5]: FakeRead(ForMatchedPlace, _69)"><span class="annotation">@85⦊</span>countdown &gt; 2<span class="annotation">⦉@85</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="83:12-83:21: @90[5]: _75 = _62
83:12-83:25: @90[6]: _74 = Lt(move _75, const 1_i32)"><span class="annotation">@88,90⦊</span>countdown &lt; 1<span class="annotation">⦉@88,90</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code odd" style="--layer: 1" title="83:29-83:38: @97[2]: _77 = _62
83:29-83:42: @97[3]: _76 = Gt(move _77, const 5_i32)"><span class="annotation">@97⦊</span>countdown &gt; 5<span class="annotation">⦉@97</span></span></span><span><span class="code even" style="--layer: 1" title="83:42-83:42: @95.Goto: goto -&gt; bb98"><span class="annotation">@95⦊</span><span class="annotation">⦉@95</span></span></span><span><span class="code odd" style="--layer: 1" title="83:42-83:42: @96.Goto: goto -&gt; bb98"><span class="annotation">@96⦊</span><span class="annotation">⦉@96</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code even" style="--layer: 1" title="83:46-83:55: @93[2]: _79 = _62
83:46-83:60: @93[3]: _78 = Ne(move _79, const 9_i32)"><span class="annotation">@93⦊</span>countdown != 9<span class="annotation">⦉@93</span></span></span><span><span class="code odd" style="--layer: 1" title="83:60-83:60: @91.Goto: goto -&gt; bb94"><span class="annotation">@91⦊</span><span class="annotation">⦉@91</span></span></span><span><span class="code even" style="--layer: 1" title="83:60-83:60: @92.Goto: goto -&gt; bb94"><span class="annotation">@92⦊</span><span class="annotation">⦉@92</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="84:13-84:26: @101[0]: _62 = const 0_i32
83:61-85:10: @101[1]: _71 = const ()
85:10-85:10: @101.Goto: goto -&gt; bb102"><span class="annotation">@99,101⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="84:13-84:26: @101[0]: _62 = const 0_i32
83:61-85:10: @101[1]: _71 = const ()
85:10-85:10: @101.Goto: goto -&gt; bb102"> countdown = 0;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="84:13-84:26: @101[0]: _62 = const 0_i32
83:61-85:10: @101[1]: _71 = const ()
85:10-85:10: @101.Goto: goto -&gt; bb102"> }<span class="annotation">⦉@99,101</span></span></span><span><span class="code even" style="--layer: 1" title="85:10-85:10: @100.Goto: goto -&gt; bb102"><span class="annotation">@100⦊</span><span class="annotation">⦉@100</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="86:9-86:23: @102[2]: _80 = CheckedSub(_62, const 5_i32)
86:9-86:23: @103[0]: _62 = move (_80.0: i32)"><span class="annotation">@102,103⦊</span>countdown -= 5<span class="annotation">⦉@102,103</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="52:35-52:44: @60[1]: _61 = _41
52:13-52:32: @60[2]: FakeRead(ForLet, _61)
53:18-53:27: @60[9]: _92 = const main::promoted[1]
53:18-53:27: @60[10]: _67 = &amp;(*_92)
53:18-53:27: @60[11]: _66 = &amp;(*_67)
53:18-53:27: @60[12]: _65 = move _66 as &amp;[&amp;str] (Pointer(Unsize))
53:9-53:29: @60[18]: _73 = ()
53:9-53:29: @60[19]: FakeRead(ForMatchedPlace, _73)
53:9-53:29: @60[20]: _91 = const main::promoted[0]
53:9-53:29: @60[21]: _71 = &amp;(*_91)
53:9-53:29: @60[22]: _70 = &amp;(*_71)
53:9-53:29: @60[23]: _69 = move _70 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
53:9-53:29: @60.Call: _64 = Arguments::new_v1(move _65, move _69) -&gt; [return: bb75, unwind: bb103]
53:9-53:29: @75.Call: _63 = _print(move _64) -&gt; [return: bb76, unwind: bb103]
53:9-53:29: @76[5]: _62 = const ()
54:9-54:15: @76[7]: _0 = const ()"><span class="annotation">@60,75,76⦊</span>should_be_reachable = countdown;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="52:35-52:44: @60[1]: _61 = _41
52:13-52:32: @60[2]: FakeRead(ForLet, _61)
53:18-53:27: @60[9]: _92 = const main::promoted[1]
53:18-53:27: @60[10]: _67 = &amp;(*_92)
53:18-53:27: @60[11]: _66 = &amp;(*_67)
53:18-53:27: @60[12]: _65 = move _66 as &amp;[&amp;str] (Pointer(Unsize))
53:9-53:29: @60[18]: _73 = ()
53:9-53:29: @60[19]: FakeRead(ForMatchedPlace, _73)
53:9-53:29: @60[20]: _91 = const main::promoted[0]
53:9-53:29: @60[21]: _71 = &amp;(*_91)
53:9-53:29: @60[22]: _70 = &amp;(*_71)
53:9-53:29: @60[23]: _69 = move _70 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
53:9-53:29: @60.Call: _64 = Arguments::new_v1(move _65, move _69) -&gt; [return: bb75, unwind: bb103]
53:9-53:29: @75.Call: _63 = _print(move _64) -&gt; [return: bb76, unwind: bb103]
53:9-53:29: @76[5]: _62 = const ()
54:9-54:15: @76[7]: _0 = const ()"> println!("reached");</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="52:35-52:44: @60[1]: _61 = _41
52:13-52:32: @60[2]: FakeRead(ForLet, _61)
53:18-53:27: @60[9]: _92 = const main::promoted[1]
53:18-53:27: @60[10]: _67 = &amp;(*_92)
53:18-53:27: @60[11]: _66 = &amp;(*_67)
53:18-53:27: @60[12]: _65 = move _66 as &amp;[&amp;str] (Pointer(Unsize))
53:9-53:29: @60[18]: _73 = ()
53:9-53:29: @60[19]: FakeRead(ForMatchedPlace, _73)
53:9-53:29: @60[20]: _91 = const main::promoted[0]
53:9-53:29: @60[21]: _71 = &amp;(*_91)
53:9-53:29: @60[22]: _70 = &amp;(*_71)
53:9-53:29: @60[23]: _69 = move _70 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
53:9-53:29: @60.Call: _64 = Arguments::new_v1(move _65, move _69) -&gt; [return: bb75, unwind: bb103]
53:9-53:29: @75.Call: _63 = _print(move _64) -&gt; [return: bb76, unwind: bb103]
53:9-53:29: @76[5]: _62 = const ()
54:9-54:15: @76[7]: _0 = const ()"> return<span class="annotation">⦉@60,75,76</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="88:35-88:44: @89[1]: _82 = _62
88:13-88:32: @89[2]: FakeRead(ForLet, _82)
89:18-89:27: @89[9]: _113 = const main::promoted[1]
89:18-89:27: @89[10]: _88 = &amp;(*_113)
89:18-89:27: @89[11]: _87 = &amp;(*_88)
89:18-89:27: @89[12]: _86 = move _87 as &amp;[&amp;str] (Pointer(Unsize))
89:9-89:29: @89[18]: _94 = ()
89:9-89:29: @89[19]: FakeRead(ForMatchedPlace, _94)
89:9-89:29: @89[20]: _112 = const main::promoted[0]
89:9-89:29: @89[21]: _92 = &amp;(*_112)
89:9-89:29: @89[22]: _91 = &amp;(*_92)
89:9-89:29: @89[23]: _90 = move _91 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
89:9-89:29: @89.Call: _85 = Arguments::new_v1(move _86, move _90) -&gt; [return: bb104, unwind: bb132]
89:9-89:29: @104.Call: _84 = _print(move _85) -&gt; [return: bb105, unwind: bb132]
89:9-89:29: @105[5]: _83 = const ()
90:9-90:15: @105[7]: _0 = const ()"><span class="annotation">@89,104,105</span>should_be_reachable = countdown;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="88:35-88:44: @89[1]: _82 = _62
88:13-88:32: @89[2]: FakeRead(ForLet, _82)
89:18-89:27: @89[9]: _113 = const main::promoted[1]
89:18-89:27: @89[10]: _88 = &amp;(*_113)
89:18-89:27: @89[11]: _87 = &amp;(*_88)
89:18-89:27: @89[12]: _86 = move _87 as &amp;[&amp;str] (Pointer(Unsize))
89:9-89:29: @89[18]: _94 = ()
89:9-89:29: @89[19]: FakeRead(ForMatchedPlace, _94)
89:9-89:29: @89[20]: _112 = const main::promoted[0]
89:9-89:29: @89[21]: _92 = &amp;(*_112)
89:9-89:29: @89[22]: _91 = &amp;(*_92)
89:9-89:29: @89[23]: _90 = move _91 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
89:9-89:29: @89.Call: _85 = Arguments::new_v1(move _86, move _90) -&gt; [return: bb104, unwind: bb132]
89:9-89:29: @104.Call: _84 = _print(move _85) -&gt; [return: bb105, unwind: bb132]
89:9-89:29: @105[5]: _83 = const ()
90:9-90:15: @105[7]: _0 = const ()"> println!("reached");</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="88:35-88:44: @89[1]: _82 = _62
88:13-88:32: @89[2]: FakeRead(ForLet, _82)
89:18-89:27: @89[9]: _113 = const main::promoted[1]
89:18-89:27: @89[10]: _88 = &amp;(*_113)
89:18-89:27: @89[11]: _87 = &amp;(*_88)
89:18-89:27: @89[12]: _86 = move _87 as &amp;[&amp;str] (Pointer(Unsize))
89:9-89:29: @89[18]: _94 = ()
89:9-89:29: @89[19]: FakeRead(ForMatchedPlace, _94)
89:9-89:29: @89[20]: _112 = const main::promoted[0]
89:9-89:29: @89[21]: _92 = &amp;(*_112)
89:9-89:29: @89[22]: _91 = &amp;(*_92)
89:9-89:29: @89[23]: _90 = move _91 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
89:9-89:29: @89.Call: _85 = Arguments::new_v1(move _86, move _90) -&gt; [return: bb104, unwind: bb132]
89:9-89:29: @104.Call: _84 = _print(move _85) -&gt; [return: bb105, unwind: bb132]
89:9-89:29: @105[5]: _83 = const ()
90:9-90:15: @105[7]: _0 = const ()"> return<span class="annotation">⦉@89,104,105</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> };</span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="57:9-57:10: @98[0]: FakeRead(ForLet, _74)"><span class="annotation">@98⦊</span>w<span class="annotation">⦉@98</span></span></span><span class="code" style="--layer: 0"> = if </span><span><span class="code even" style="--layer: 1" title="57:16-57:25: @77[5]: _76 = _41
57:16-57:29: @77[6]: _75 = Gt(move _76, const 7_i32)
57:16-57:29: @77[8]: FakeRead(ForMatchedPlace, _75)"><span class="annotation">@77⦊</span>countdown &gt; 7<span class="annotation">⦉@77</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="58:9-58:23: @81[0]: _41 = move (_77.0: i32)"><span class="annotation">@81⦊</span>countdown -= 4<span class="annotation">⦉@81</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else if </span><span><span class="code even" style="--layer: 1" title="59:15-59:24: @79[2]: _79 = _41
59:15-59:28: @79[3]: _78 = Gt(move _79, const 2_i32)
59:15-59:28: @79[5]: FakeRead(ForMatchedPlace, _78)"><span class="annotation">@79⦊</span>countdown &gt; 2<span class="annotation">⦉@79</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="60:12-60:21: @84[5]: _84 = _41
60:12-60:25: @84[6]: _83 = Lt(move _84, const 1_i32)"><span class="annotation">@82,84⦊</span>countdown &lt; 1<span class="annotation">⦉@82,84</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code even" style="--layer: 1" title="60:29-60:38: @91[2]: _86 = _41
60:29-60:42: @91[3]: _85 = Gt(move _86, const 5_i32)"><span class="annotation">@91⦊</span>countdown &gt; 5<span class="annotation">⦉@91</span></span></span><span><span class="code odd" style="--layer: 1" title="60:42-60:42: @89.Goto: goto -&gt; bb92"><span class="annotation">@89⦊</span><span class="annotation">⦉@89</span></span></span><span><span class="code even" style="--layer: 1" title="60:42-60:42: @90.Goto: goto -&gt; bb92"><span class="annotation">@90⦊</span><span class="annotation">⦉@90</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code odd" style="--layer: 1" title="60:46-60:55: @87[2]: _88 = _41
60:46-60:60: @87[3]: _87 = Ne(move _88, const 9_i32)"><span class="annotation">@87⦊</span>countdown != 9<span class="annotation">⦉@87</span></span></span><span><span class="code even" style="--layer: 1" title="60:60-60:60: @85.Goto: goto -&gt; bb88"><span class="annotation">@85⦊</span><span class="annotation">⦉@85</span></span></span><span><span class="code odd" style="--layer: 1" title="60:60-60:60: @86.Goto: goto -&gt; bb88"><span class="annotation">@86⦊</span><span class="annotation">⦉@86</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="61:13-61:26: @95[0]: _41 = const 0_i32
60:61-62:10: @95[1]: _80 = const ()
62:10-62:10: @95.Goto: goto -&gt; bb96"><span class="annotation">@93,95⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="61:13-61:26: @95[0]: _41 = const 0_i32
60:61-62:10: @95[1]: _80 = const ()
62:10-62:10: @95.Goto: goto -&gt; bb96"> countdown = 0;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="61:13-61:26: @95[0]: _41 = const 0_i32
60:61-62:10: @95[1]: _80 = const ()
62:10-62:10: @95.Goto: goto -&gt; bb96"> }<span class="annotation">⦉@93,95</span></span></span><span><span class="code odd" style="--layer: 1" title="62:10-62:10: @94.Goto: goto -&gt; bb96"><span class="annotation">@94⦊</span><span class="annotation">⦉@94</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="63:9-63:23: @97[0]: _41 = move (_89.0: i32)"><span class="annotation">@97⦊</span>countdown -= 5<span class="annotation">⦉@97</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="93:9-93:10: @127[0]: FakeRead(ForLet, _95)"><span class="annotation">@127⦊</span>w<span class="annotation">⦉@127</span></span></span><span class="code" style="--layer: 0"> = if </span><span><span class="code even" style="--layer: 1" title="93:16-93:25: @106[5]: _97 = _62
93:16-93:29: @106[6]: _96 = Gt(move _97, const 7_i32)
93:16-93:29: @106[8]: FakeRead(ForMatchedPlace, _96)"><span class="annotation">@106⦊</span>countdown &gt; 7<span class="annotation">⦉@106</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="94:9-94:23: @109[0]: _98 = CheckedSub(_62, const 4_i32)
94:9-94:23: @110[0]: _62 = move (_98.0: i32)
93:30-95:6: @110[1]: _95 = const ()"><span class="annotation">@107,109,110⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="94:9-94:23: @109[0]: _98 = CheckedSub(_62, const 4_i32)
94:9-94:23: @110[0]: _62 = move (_98.0: i32)
93:30-95:6: @110[1]: _95 = const ()"> countdown -= 4;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="94:9-94:23: @109[0]: _98 = CheckedSub(_62, const 4_i32)
94:9-94:23: @110[0]: _62 = move (_98.0: i32)
93:30-95:6: @110[1]: _95 = const ()"> }<span class="annotation">⦉@107,109,110</span></span></span><span class="code" style="--layer: 0"> else if </span><span><span class="code even" style="--layer: 1" title="95:15-95:24: @108[2]: _100 = _62
95:15-95:28: @108[3]: _99 = Gt(move _100, const 2_i32)
95:15-95:28: @108[5]: FakeRead(ForMatchedPlace, _99)"><span class="annotation">@108⦊</span>countdown &gt; 2<span class="annotation">⦉@108</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="96:12-96:21: @113[5]: _105 = _62
96:12-96:25: @113[6]: _104 = Lt(move _105, const 1_i32)"><span class="annotation">@111,113⦊</span>countdown &lt; 1<span class="annotation">⦉@111,113</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code even" style="--layer: 1" title="96:29-96:38: @120[2]: _107 = _62
96:29-96:42: @120[3]: _106 = Gt(move _107, const 5_i32)"><span class="annotation">@120⦊</span>countdown &gt; 5<span class="annotation">⦉@120</span></span></span><span><span class="code odd" style="--layer: 1" title="96:42-96:42: @118.Goto: goto -&gt; bb121"><span class="annotation">@118⦊</span><span class="annotation">⦉@118</span></span></span><span><span class="code even" style="--layer: 1" title="96:42-96:42: @119.Goto: goto -&gt; bb121"><span class="annotation">@119⦊</span><span class="annotation">⦉@119</span></span></span><span class="code" style="--layer: 0"> || </span><span><span class="code odd" style="--layer: 1" title="96:46-96:55: @116[2]: _109 = _62
96:46-96:60: @116[3]: _108 = Ne(move _109, const 9_i32)"><span class="annotation">@116⦊</span>countdown != 9<span class="annotation">⦉@116</span></span></span><span><span class="code even" style="--layer: 1" title="96:60-96:60: @114.Goto: goto -&gt; bb117"><span class="annotation">@114⦊</span><span class="annotation">⦉@114</span></span></span><span><span class="code odd" style="--layer: 1" title="96:60-96:60: @115.Goto: goto -&gt; bb117"><span class="annotation">@115⦊</span><span class="annotation">⦉@115</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="97:13-97:26: @124[0]: _62 = const 0_i32
96:61-98:10: @124[1]: _101 = const ()
98:10-98:10: @124.Goto: goto -&gt; bb125"><span class="annotation">@122,124⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="97:13-97:26: @124[0]: _62 = const 0_i32
96:61-98:10: @124[1]: _101 = const ()
98:10-98:10: @124.Goto: goto -&gt; bb125"> countdown = 0;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="97:13-97:26: @124[0]: _62 = const 0_i32
96:61-98:10: @124[1]: _101 = const ()
98:10-98:10: @124.Goto: goto -&gt; bb125"> }<span class="annotation">⦉@122,124</span></span></span><span><span class="code odd" style="--layer: 1" title="98:10-98:10: @123.Goto: goto -&gt; bb125"><span class="annotation">@123⦊</span><span class="annotation">⦉@123</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="99:9-99:23: @125[2]: _110 = CheckedSub(_62, const 5_i32)
99:9-99:23: @126[0]: _62 = move (_110.0: i32)"><span class="annotation">@125,126⦊</span>countdown -= 5<span class="annotation">⦉@125,126</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="65:9-65:15: @83[0]: _0 = const ()"><span class="annotation">@83⦊</span>return<span class="annotation">⦉@83</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="101:9-101:15: @112[0]: _0 = const ()"><span class="annotation">@112</span>return<span class="annotation">⦉@112</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> };</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="67:2-67:2: @101.Goto: goto -&gt; bb102"><span class="annotation">@101⦊</span><span class="annotation">⦉@101</span></span></span><span><span class="code odd" style="--layer: 1" title="67:2-67:2: @102.Return: return"><span class="annotation">@102⦊</span><span class="annotation">⦉@102</span></span></span></span></div>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="103:2-103:2: @130.Goto: goto -&gt; bb131"><span class="annotation">@130⦊</span><span class="annotation">⦉@130</span></span></span><span><span class="code odd" style="--layer: 1" title="103:2-103:2: @131.Return: return"><span class="annotation">@131</span><span class="annotation">⦉@131</span></span></span></span></div>
</body>
</html>

View file

@ -71,10 +71,13 @@ For revisions in Pull Requests (PR):
<body>
<div class="code" style="counter-reset: line 17"><span class="line"> <span class="code" style="--layer: 0">fn in_func(a: u32) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="19:17-19:18: @0[1]: _2 = const 1_u32
19:13-19:14: @0[2]: FakeRead(ForLet, _2)"><span class="annotation">@0⦊</span>b = 1<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="20:13-20:14: @1[3]: FakeRead(ForLet, _3)"><span class="annotation">@1,2,3,4⦊</span>c<span class="annotation">⦉@1,2,3,4</span></span></span><span class="code" style="--layer: 0"> = </span><span><span class="code even" style="--layer: 1" title="20:17-20:18: @0[5]: _4 = _1
20:21-20:22: @0[7]: _5 = _2"><span class="annotation">@0⦊</span>a + b<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="21:18-21:26: @1[9]: _23 = const in_func::promoted[0]
19:13-19:14: @0[2]: FakeRead(ForLet, _2)
20:17-20:18: @0[5]: _4 = _1
20:21-20:22: @0[7]: _5 = _2
20:17-20:22: @0[8]: _6 = CheckedAdd(_4, _5)
20:17-20:22: @1[0]: _3 = move (_6.0: u32)
20:13-20:14: @1[3]: FakeRead(ForLet, _3)
21:18-21:26: @1[9]: _23 = const in_func::promoted[0]
21:18-21:26: @1[10]: _11 = &amp;(*_23)
21:18-21:26: @1[11]: _10 = &amp;(*_11)
21:18-21:26: @1[12]: _9 = move _10 as &amp;[&amp;str] (Pointer(Unsize))
@ -92,8 +95,15 @@ For revisions in Pull Requests (PR):
21:9-21:30: @2.Call: _8 = Arguments::new_v1(move _9, move _13) -&gt; [return: bb3, unwind: bb5]
21:9-21:30: @3.Call: _7 = _print(move _8) -&gt; [return: bb4, unwind: bb5]
21:9-21:30: @4[6]: _0 = const ()
22:6-22:6: @4.Return: return"><span class="annotation">@1,2,3,4⦊</span>println!("c = {}", c)</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="21:18-21:26: @1[9]: _23 = const in_func::promoted[0]
22:6-22:6: @4.Return: return"><span class="annotation">@0,1,2,3,4⦊</span>b = 1;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="19:17-19:18: @0[1]: _2 = const 1_u32
19:13-19:14: @0[2]: FakeRead(ForLet, _2)
20:17-20:18: @0[5]: _4 = _1
20:21-20:22: @0[7]: _5 = _2
20:17-20:22: @0[8]: _6 = CheckedAdd(_4, _5)
20:17-20:22: @1[0]: _3 = move (_6.0: u32)
20:13-20:14: @1[3]: FakeRead(ForLet, _3)
21:18-21:26: @1[9]: _23 = const in_func::promoted[0]
21:18-21:26: @1[10]: _11 = &amp;(*_23)
21:18-21:26: @1[11]: _10 = &amp;(*_11)
21:18-21:26: @1[12]: _9 = move _10 as &amp;[&amp;str] (Pointer(Unsize))
@ -111,6 +121,58 @@ For revisions in Pull Requests (PR):
21:9-21:30: @2.Call: _8 = Arguments::new_v1(move _9, move _13) -&gt; [return: bb3, unwind: bb5]
21:9-21:30: @3.Call: _7 = _print(move _8) -&gt; [return: bb4, unwind: bb5]
21:9-21:30: @4[6]: _0 = const ()
22:6-22:6: @4.Return: return"> }<span class="annotation">⦉@1,2,3,4</span></span></span></span></div>
22:6-22:6: @4.Return: return"> let c = a + b;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="19:17-19:18: @0[1]: _2 = const 1_u32
19:13-19:14: @0[2]: FakeRead(ForLet, _2)
20:17-20:18: @0[5]: _4 = _1
20:21-20:22: @0[7]: _5 = _2
20:17-20:22: @0[8]: _6 = CheckedAdd(_4, _5)
20:17-20:22: @1[0]: _3 = move (_6.0: u32)
20:13-20:14: @1[3]: FakeRead(ForLet, _3)
21:18-21:26: @1[9]: _23 = const in_func::promoted[0]
21:18-21:26: @1[10]: _11 = &amp;(*_23)
21:18-21:26: @1[11]: _10 = &amp;(*_11)
21:18-21:26: @1[12]: _9 = move _10 as &amp;[&amp;str] (Pointer(Unsize))
21:28-21:29: @1[20]: _18 = &amp;_3
21:9-21:30: @1[21]: _17 = (move _18,)
21:9-21:30: @1[23]: FakeRead(ForMatchedPlace, _17)
21:9-21:30: @1[25]: _19 = (_17.0: &amp;u32)
21:9-21:30: @1[28]: _21 = &amp;(*_19)
21:9-21:30: @1[30]: _22 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
21:9-21:30: @1.Call: _20 = ArgumentV1::new::&lt;u32&gt;(move _21, move _22) -&gt; [return: bb2, unwind: bb5]
21:9-21:30: @2[2]: _16 = [move _20]
21:9-21:30: @2[5]: _15 = &amp;_16
21:9-21:30: @2[6]: _14 = &amp;(*_15)
21:9-21:30: @2[7]: _13 = move _14 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
21:9-21:30: @2.Call: _8 = Arguments::new_v1(move _9, move _13) -&gt; [return: bb3, unwind: bb5]
21:9-21:30: @3.Call: _7 = _print(move _8) -&gt; [return: bb4, unwind: bb5]
21:9-21:30: @4[6]: _0 = const ()
22:6-22:6: @4.Return: return"> println!("c = {}", c)</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="19:17-19:18: @0[1]: _2 = const 1_u32
19:13-19:14: @0[2]: FakeRead(ForLet, _2)
20:17-20:18: @0[5]: _4 = _1
20:21-20:22: @0[7]: _5 = _2
20:17-20:22: @0[8]: _6 = CheckedAdd(_4, _5)
20:17-20:22: @1[0]: _3 = move (_6.0: u32)
20:13-20:14: @1[3]: FakeRead(ForLet, _3)
21:18-21:26: @1[9]: _23 = const in_func::promoted[0]
21:18-21:26: @1[10]: _11 = &amp;(*_23)
21:18-21:26: @1[11]: _10 = &amp;(*_11)
21:18-21:26: @1[12]: _9 = move _10 as &amp;[&amp;str] (Pointer(Unsize))
21:28-21:29: @1[20]: _18 = &amp;_3
21:9-21:30: @1[21]: _17 = (move _18,)
21:9-21:30: @1[23]: FakeRead(ForMatchedPlace, _17)
21:9-21:30: @1[25]: _19 = (_17.0: &amp;u32)
21:9-21:30: @1[28]: _21 = &amp;(*_19)
21:9-21:30: @1[30]: _22 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
21:9-21:30: @1.Call: _20 = ArgumentV1::new::&lt;u32&gt;(move _21, move _22) -&gt; [return: bb2, unwind: bb5]
21:9-21:30: @2[2]: _16 = [move _20]
21:9-21:30: @2[5]: _15 = &amp;_16
21:9-21:30: @2[6]: _14 = &amp;(*_15)
21:9-21:30: @2[7]: _13 = move _14 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
21:9-21:30: @2.Call: _8 = Arguments::new_v1(move _9, move _13) -&gt; [return: bb3, unwind: bb5]
21:9-21:30: @3.Call: _7 = _print(move _8) -&gt; [return: bb4, unwind: bb5]
21:9-21:30: @4[6]: _0 = const ()
22:6-22:6: @4.Return: return"> }<span class="annotation">⦉@0,1,2,3,4</span></span></span></span></div>
</body>
</html>

View file

@ -69,13 +69,33 @@ For revisions in Pull Requests (PR):
</style>
</head>
<body>
<div class="code" style="counter-reset: line 39"><span class="line"> <span class="code" style="--layer: 0">fn trait_func(&amp;mut self, incr: u32) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> self.in_struct_field += </span><span><span class="code even" style="--layer: 1" title="41:37-41:41: @0[1]: _3 = _2"><span class="annotation">@0⦊</span>incr<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="42:21-42:41: @1[4]: _6 = ((*_1).0: u32)
<div class="code" style="counter-reset: line 39"><span class="line"> <span class="code" style="--layer: 0">fn trait_func(&amp;mut self, incr: u32) </span><span><span class="code even" style="--layer: 1" title="41:37-41:41: @0[1]: _3 = _2
41:13-41:41: @0[2]: _4 = CheckedAdd(((*_1).0: u32), _3)
41:13-41:41: @1[0]: ((*_1).0: u32) = move (_4.0: u32)
42:21-42:41: @1[4]: _6 = ((*_1).0: u32)
42:13-42:42: @1.Call: _5 = in_func(move _6) -&gt; [return: bb2, unwind: bb3]
43:10-43:10: @2.Return: return"><span class="annotation">@1,2⦊</span>in_func(self.in_struct_field);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="42:21-42:41: @1[4]: _6 = ((*_1).0: u32)
40:45-43:10: @2[2]: _0 = const ()
43:10-43:10: @2.Return: return"><span class="annotation">@0,1,2⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="41:37-41:41: @0[1]: _3 = _2
41:13-41:41: @0[2]: _4 = CheckedAdd(((*_1).0: u32), _3)
41:13-41:41: @1[0]: ((*_1).0: u32) = move (_4.0: u32)
42:21-42:41: @1[4]: _6 = ((*_1).0: u32)
42:13-42:42: @1.Call: _5 = in_func(move _6) -&gt; [return: bb2, unwind: bb3]
43:10-43:10: @2.Return: return"> }<span class="annotation">⦉@1,2</span></span></span></span></div>
40:45-43:10: @2[2]: _0 = const ()
43:10-43:10: @2.Return: return"> self.in_struct_field += incr;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="41:37-41:41: @0[1]: _3 = _2
41:13-41:41: @0[2]: _4 = CheckedAdd(((*_1).0: u32), _3)
41:13-41:41: @1[0]: ((*_1).0: u32) = move (_4.0: u32)
42:21-42:41: @1[4]: _6 = ((*_1).0: u32)
42:13-42:42: @1.Call: _5 = in_func(move _6) -&gt; [return: bb2, unwind: bb3]
40:45-43:10: @2[2]: _0 = const ()
43:10-43:10: @2.Return: return"> in_func(self.in_struct_field);</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="41:37-41:41: @0[1]: _3 = _2
41:13-41:41: @0[2]: _4 = CheckedAdd(((*_1).0: u32), _3)
41:13-41:41: @1[0]: ((*_1).0: u32) = move (_4.0: u32)
42:21-42:41: @1[4]: _6 = ((*_1).0: u32)
42:13-42:42: @1.Call: _5 = in_func(move _6) -&gt; [return: bb2, unwind: bb3]
40:45-43:10: @2[2]: _0 = const ()
43:10-43:10: @2.Return: return"> }<span class="annotation">⦉@0,1,2</span></span></span></span></div>
</body>
</html>

View file

@ -108,28 +108,46 @@ For revisions in Pull Requests (PR):
9:16-9:22: @16[18]: FakeRead(ForMatchedPlace, _26)"><span class="annotation">@14,16⦊</span>a &lt; 30<span class="annotation">⦉@14,16</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="10:17-10:22: @19[0]: _11 = const ()"><span class="annotation">@17,19⦊</span>break<span class="annotation">⦉@17,19</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="12:13-12:19: @20[0]: _9 = move (_29.0: i32)"><span class="annotation">@20⦊</span>a -= 5<span class="annotation">⦉@20</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="13:13-13:19: @21[0]: _10 = move (_30.0: i32)"><span class="annotation">@21⦊</span>b -= 5<span class="annotation">⦉@21</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="14:16-14:17: @21[3]: _32 = _10
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="12:13-12:19: @18[3]: _29 = CheckedSub(_9, const 5_i32)
12:13-12:19: @20[0]: _9 = move (_29.0: i32)
13:13-13:19: @20[1]: _30 = CheckedSub(_10, const 5_i32)
13:13-13:19: @21[0]: _10 = move (_30.0: i32)"><span class="annotation">@18,20,21⦊</span>a -= 5;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="12:13-12:19: @18[3]: _29 = CheckedSub(_9, const 5_i32)
12:13-12:19: @20[0]: _9 = move (_29.0: i32)
13:13-13:19: @20[1]: _30 = CheckedSub(_10, const 5_i32)
13:13-13:19: @21[0]: _10 = move (_30.0: i32)"> b -= 5<span class="annotation">⦉@18,20,21</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code odd" style="--layer: 1" title="14:16-14:17: @21[3]: _32 = _10
14:16-14:22: @21[4]: _31 = Lt(move _32, const 90_i32)
14:16-14:22: @21[6]: FakeRead(ForMatchedPlace, _31)"><span class="annotation">@21⦊</span>b &lt; 90<span class="annotation">⦉@21</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="15:17-15:24: @25[0]: _9 = move (_33.0: i32)
14:16-14:22: @21[6]: FakeRead(ForMatchedPlace, _31)"><span class="annotation">@18,20,21⦊</span>b &lt; 90<span class="annotation">⦉@18,20,21</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="15:17-15:24: @24[0]: _33 = CheckedSub(_9, const 10_i32)
15:17-15:24: @25[0]: _9 = move (_33.0: i32)
16:20-16:27: @25[2]: _34 = _1
16:20-16:27: @25[3]: FakeRead(ForMatchedPlace, _34)"><span class="annotation">@25⦊</span>a -= 10;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="15:17-15:24: @25[0]: _9 = move (_33.0: i32)
16:20-16:27: @25[3]: FakeRead(ForMatchedPlace, _34)"><span class="annotation">@22,24,25⦊</span>a -= 10;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="15:17-15:24: @24[0]: _33 = CheckedSub(_9, const 10_i32)
15:17-15:24: @25[0]: _9 = move (_33.0: i32)
16:20-16:27: @25[2]: _34 = _1
16:20-16:27: @25[3]: FakeRead(ForMatchedPlace, _34)"> if is_true<span class="annotation">⦉@25</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="17:21-17:33: @28[0]: _0 = const ()"><span class="annotation">@26,28⦊</span>break 'outer<span class="annotation">⦉@26,28</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="19:21-19:27: @29[0]: _9 = move (_36.0: i32)
21:14-21:14: @29.Goto: goto -&gt; bb30"><span class="annotation">@29⦊</span>a -= 2;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:21-19:27: @29[0]: _9 = move (_36.0: i32)
16:20-16:27: @25[3]: FakeRead(ForMatchedPlace, _34)"> if is_true<span class="annotation">⦉@22,24,25</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="17:21-17:33: @28[0]: _0 = const ()"><span class="annotation">@26,28⦊</span>break 'outer<span class="annotation">⦉@26,28</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> } else </span><span><span class="code even" style="--layer: 1" title="19:21-19:27: @27[0]: _36 = CheckedSub(_9, const 2_i32)
19:21-19:27: @29[0]: _9 = move (_36.0: i32)
18:24-20:18: @29[1]: _24 = const ()
21:14-21:14: @29.Goto: goto -&gt; bb30"><span class="annotation">@27,29⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="19:21-19:27: @27[0]: _36 = CheckedSub(_9, const 2_i32)
19:21-19:27: @29[0]: _9 = move (_36.0: i32)
18:24-20:18: @29[1]: _24 = const ()
21:14-21:14: @29.Goto: goto -&gt; bb30"> a -= 2;</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="19:21-19:27: @27[0]: _36 = CheckedSub(_9, const 2_i32)
19:21-19:27: @29[0]: _9 = move (_36.0: i32)
18:24-20:18: @29[1]: _24 = const ()
21:14-21:14: @29.Goto: goto -&gt; bb30"> }</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:21-19:27: @29[0]: _9 = move (_36.0: i32)
21:14-21:14: @29.Goto: goto -&gt; bb30"> }<span class="annotation">⦉@29</span></span></span><span><span class="code even" style="--layer: 1" title="21:14-21:14: @23.Goto: goto -&gt; bb30"><span class="annotation">@23⦊</span><span class="annotation">⦉@23</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code odd" style="--layer: 1" title="22:10-22:10: @30.Goto: goto -&gt; bb10"><span class="annotation">@30⦊</span><span class="annotation">⦉@30</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="23:9-23:23: @32[0]: _5 = move (_37.0: i32)"><span class="annotation">@32⦊</span>countdown -= 1<span class="annotation">⦉@32</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code odd" style="--layer: 1" title="24:6-24:6: @7.Goto: goto -&gt; bb33"><span class="annotation">@7⦊</span><span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="25:2-25:2: @33.Return: return"><span class="annotation">@33⦊</span><span class="annotation">⦉@33</span></span></span></span></div>
<span class="line"><span class="code even" style="--layer: 1" title="19:21-19:27: @27[0]: _36 = CheckedSub(_9, const 2_i32)
19:21-19:27: @29[0]: _9 = move (_36.0: i32)
18:24-20:18: @29[1]: _24 = const ()
21:14-21:14: @29.Goto: goto -&gt; bb30"> }<span class="annotation">⦉@27,29</span></span></span><span><span class="code odd" style="--layer: 1" title="21:14-21:14: @23.Goto: goto -&gt; bb30"><span class="annotation">@23⦊</span><span class="annotation">⦉@23</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code even" style="--layer: 1" title="22:10-22:10: @30.Goto: goto -&gt; bb10"><span class="annotation">@30⦊</span><span class="annotation">⦉@30</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="23:9-23:23: @31[4]: _37 = CheckedSub(_5, const 1_i32)
23:9-23:23: @32[0]: _5 = move (_37.0: i32)"><span class="annotation">@31,32⦊</span>countdown -= 1<span class="annotation">⦉@31,32</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code even" style="--layer: 1" title="24:6-24:6: @7.Goto: goto -&gt; bb33"><span class="annotation">@7⦊</span><span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="25:2-25:2: @33.Return: return"><span class="annotation">@33⦊</span><span class="annotation">⦉@33</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,259 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>overflow.main - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 14"><span class="line"><span class="code" style="--layer: 0">fn main() -&gt; Result&lt;(),u8&gt; {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="16:25-16:27: @0[1]: _1 = const 10_i32
16:9-16:22: @0[2]: FakeRead(ForLet, _1)"><span class="annotation">@0⦊</span>mut countdown = 10<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> while </span><span><span class="code odd" style="--layer: 1" title="17:11-17:20: @2[2]: _5 = _1
17:11-17:24: @2[3]: _4 = Gt(move _5, const 0_i32)
17:11-17:24: @2[5]: FakeRead(ForMatchedPlace, _4)"><span class="annotation">@1,2⦊</span>countdown &gt; 0<span class="annotation">⦉@1,2</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="18:12-18:21: @5[3]: _8 = _1
18:12-18:26: @5[4]: _7 = Eq(move _8, const 1_i32)
18:12-18:26: @5[6]: FakeRead(ForMatchedPlace, _7)"><span class="annotation">@3,5⦊</span>countdown == 1<span class="annotation">⦉@3,5</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="19:26-19:44: @8.Call: _9 = might_overflow(const 10_u32) -&gt; [return: bb9, unwind: bb23]
19:17-19:23: @9[0]: FakeRead(ForLet, _9)
20:22-20:34: @9[7]: _51 = const main::promoted[1]
20:22-20:34: @9[8]: _15 = &amp;(*_51)
20:22-20:34: @9[9]: _14 = &amp;(*_15)
20:22-20:34: @9[10]: _13 = move _14 as &amp;[&amp;str] (Pointer(Unsize))
20:36-20:42: @9[18]: _22 = &amp;_9
20:13-20:44: @9[19]: _21 = (move _22,)
20:13-20:44: @9[21]: FakeRead(ForMatchedPlace, _21)
20:13-20:44: @9[23]: _23 = (_21.0: &amp;u32)
20:13-20:44: @9[26]: _25 = &amp;(*_23)
20:13-20:44: @9[28]: _26 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
20:13-20:44: @9.Call: _24 = ArgumentV1::new::&lt;u32&gt;(move _25, move _26) -&gt; [return: bb10, unwind: bb23]
20:13-20:44: @10[2]: _20 = [move _24]
20:13-20:44: @10[5]: _19 = &amp;_20
20:13-20:44: @10[6]: _18 = &amp;(*_19)
20:13-20:44: @10[7]: _17 = move _18 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
20:13-20:44: @10.Call: _12 = Arguments::new_v1(move _13, move _17) -&gt; [return: bb11, unwind: bb23]
20:13-20:44: @11.Call: _11 = _print(move _12) -&gt; [return: bb12, unwind: bb23]
20:13-20:44: @12[6]: _10 = const ()
18:27-21:10: @12[8]: _6 = const ()"><span class="annotation">@6,8,9,10,11,12⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:26-19:44: @8.Call: _9 = might_overflow(const 10_u32) -&gt; [return: bb9, unwind: bb23]
19:17-19:23: @9[0]: FakeRead(ForLet, _9)
20:22-20:34: @9[7]: _51 = const main::promoted[1]
20:22-20:34: @9[8]: _15 = &amp;(*_51)
20:22-20:34: @9[9]: _14 = &amp;(*_15)
20:22-20:34: @9[10]: _13 = move _14 as &amp;[&amp;str] (Pointer(Unsize))
20:36-20:42: @9[18]: _22 = &amp;_9
20:13-20:44: @9[19]: _21 = (move _22,)
20:13-20:44: @9[21]: FakeRead(ForMatchedPlace, _21)
20:13-20:44: @9[23]: _23 = (_21.0: &amp;u32)
20:13-20:44: @9[26]: _25 = &amp;(*_23)
20:13-20:44: @9[28]: _26 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
20:13-20:44: @9.Call: _24 = ArgumentV1::new::&lt;u32&gt;(move _25, move _26) -&gt; [return: bb10, unwind: bb23]
20:13-20:44: @10[2]: _20 = [move _24]
20:13-20:44: @10[5]: _19 = &amp;_20
20:13-20:44: @10[6]: _18 = &amp;(*_19)
20:13-20:44: @10[7]: _17 = move _18 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
20:13-20:44: @10.Call: _12 = Arguments::new_v1(move _13, move _17) -&gt; [return: bb11, unwind: bb23]
20:13-20:44: @11.Call: _11 = _print(move _12) -&gt; [return: bb12, unwind: bb23]
20:13-20:44: @12[6]: _10 = const ()
18:27-21:10: @12[8]: _6 = const ()"> let result = might_overflow(10);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:26-19:44: @8.Call: _9 = might_overflow(const 10_u32) -&gt; [return: bb9, unwind: bb23]
19:17-19:23: @9[0]: FakeRead(ForLet, _9)
20:22-20:34: @9[7]: _51 = const main::promoted[1]
20:22-20:34: @9[8]: _15 = &amp;(*_51)
20:22-20:34: @9[9]: _14 = &amp;(*_15)
20:22-20:34: @9[10]: _13 = move _14 as &amp;[&amp;str] (Pointer(Unsize))
20:36-20:42: @9[18]: _22 = &amp;_9
20:13-20:44: @9[19]: _21 = (move _22,)
20:13-20:44: @9[21]: FakeRead(ForMatchedPlace, _21)
20:13-20:44: @9[23]: _23 = (_21.0: &amp;u32)
20:13-20:44: @9[26]: _25 = &amp;(*_23)
20:13-20:44: @9[28]: _26 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
20:13-20:44: @9.Call: _24 = ArgumentV1::new::&lt;u32&gt;(move _25, move _26) -&gt; [return: bb10, unwind: bb23]
20:13-20:44: @10[2]: _20 = [move _24]
20:13-20:44: @10[5]: _19 = &amp;_20
20:13-20:44: @10[6]: _18 = &amp;(*_19)
20:13-20:44: @10[7]: _17 = move _18 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
20:13-20:44: @10.Call: _12 = Arguments::new_v1(move _13, move _17) -&gt; [return: bb11, unwind: bb23]
20:13-20:44: @11.Call: _11 = _print(move _12) -&gt; [return: bb12, unwind: bb23]
20:13-20:44: @12[6]: _10 = const ()
18:27-21:10: @12[8]: _6 = const ()"> println!("Result: {}", result);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:26-19:44: @8.Call: _9 = might_overflow(const 10_u32) -&gt; [return: bb9, unwind: bb23]
19:17-19:23: @9[0]: FakeRead(ForLet, _9)
20:22-20:34: @9[7]: _51 = const main::promoted[1]
20:22-20:34: @9[8]: _15 = &amp;(*_51)
20:22-20:34: @9[9]: _14 = &amp;(*_15)
20:22-20:34: @9[10]: _13 = move _14 as &amp;[&amp;str] (Pointer(Unsize))
20:36-20:42: @9[18]: _22 = &amp;_9
20:13-20:44: @9[19]: _21 = (move _22,)
20:13-20:44: @9[21]: FakeRead(ForMatchedPlace, _21)
20:13-20:44: @9[23]: _23 = (_21.0: &amp;u32)
20:13-20:44: @9[26]: _25 = &amp;(*_23)
20:13-20:44: @9[28]: _26 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
20:13-20:44: @9.Call: _24 = ArgumentV1::new::&lt;u32&gt;(move _25, move _26) -&gt; [return: bb10, unwind: bb23]
20:13-20:44: @10[2]: _20 = [move _24]
20:13-20:44: @10[5]: _19 = &amp;_20
20:13-20:44: @10[6]: _18 = &amp;(*_19)
20:13-20:44: @10[7]: _17 = move _18 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
20:13-20:44: @10.Call: _12 = Arguments::new_v1(move _13, move _17) -&gt; [return: bb11, unwind: bb23]
20:13-20:44: @11.Call: _11 = _print(move _12) -&gt; [return: bb12, unwind: bb23]
20:13-20:44: @12[6]: _10 = const ()
18:27-21:10: @12[8]: _6 = const ()"> }<span class="annotation">⦉@6,8,9,10,11,12</span></span></span><span class="code" style="--layer: 0"> else if </span><span><span class="code even" style="--layer: 1" title="21:19-21:28: @7[2]: _28 = _1
21:19-21:32: @7[3]: _27 = Lt(move _28, const 5_i32)
21:19-21:32: @7[5]: FakeRead(ForMatchedPlace, _27)"><span class="annotation">@7⦊</span>countdown &lt; 5<span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="22:26-22:43: @15.Call: _29 = might_overflow(const 1_u32) -&gt; [return: bb16, unwind: bb23]
22:17-22:23: @16[0]: FakeRead(ForLet, _29)
23:22-23:34: @16[7]: _50 = const main::promoted[0]
23:22-23:34: @16[8]: _35 = &amp;(*_50)
23:22-23:34: @16[9]: _34 = &amp;(*_35)
23:22-23:34: @16[10]: _33 = move _34 as &amp;[&amp;str] (Pointer(Unsize))
23:36-23:42: @16[18]: _42 = &amp;_29
23:13-23:44: @16[19]: _41 = (move _42,)
23:13-23:44: @16[21]: FakeRead(ForMatchedPlace, _41)
23:13-23:44: @16[23]: _43 = (_41.0: &amp;u32)
23:13-23:44: @16[26]: _45 = &amp;(*_43)
23:13-23:44: @16[28]: _46 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
23:13-23:44: @16.Call: _44 = ArgumentV1::new::&lt;u32&gt;(move _45, move _46) -&gt; [return: bb17, unwind: bb23]
23:13-23:44: @17[2]: _40 = [move _44]
23:13-23:44: @17[5]: _39 = &amp;_40
23:13-23:44: @17[6]: _38 = &amp;(*_39)
23:13-23:44: @17[7]: _37 = move _38 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
23:13-23:44: @17.Call: _32 = Arguments::new_v1(move _33, move _37) -&gt; [return: bb18, unwind: bb23]
23:13-23:44: @18.Call: _31 = _print(move _32) -&gt; [return: bb19, unwind: bb23]
23:13-23:44: @19[6]: _30 = const ()
21:33-24:10: @19[8]: _6 = const ()"><span class="annotation">@13,15,16,17,18,19⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="22:26-22:43: @15.Call: _29 = might_overflow(const 1_u32) -&gt; [return: bb16, unwind: bb23]
22:17-22:23: @16[0]: FakeRead(ForLet, _29)
23:22-23:34: @16[7]: _50 = const main::promoted[0]
23:22-23:34: @16[8]: _35 = &amp;(*_50)
23:22-23:34: @16[9]: _34 = &amp;(*_35)
23:22-23:34: @16[10]: _33 = move _34 as &amp;[&amp;str] (Pointer(Unsize))
23:36-23:42: @16[18]: _42 = &amp;_29
23:13-23:44: @16[19]: _41 = (move _42,)
23:13-23:44: @16[21]: FakeRead(ForMatchedPlace, _41)
23:13-23:44: @16[23]: _43 = (_41.0: &amp;u32)
23:13-23:44: @16[26]: _45 = &amp;(*_43)
23:13-23:44: @16[28]: _46 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
23:13-23:44: @16.Call: _44 = ArgumentV1::new::&lt;u32&gt;(move _45, move _46) -&gt; [return: bb17, unwind: bb23]
23:13-23:44: @17[2]: _40 = [move _44]
23:13-23:44: @17[5]: _39 = &amp;_40
23:13-23:44: @17[6]: _38 = &amp;(*_39)
23:13-23:44: @17[7]: _37 = move _38 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
23:13-23:44: @17.Call: _32 = Arguments::new_v1(move _33, move _37) -&gt; [return: bb18, unwind: bb23]
23:13-23:44: @18.Call: _31 = _print(move _32) -&gt; [return: bb19, unwind: bb23]
23:13-23:44: @19[6]: _30 = const ()
21:33-24:10: @19[8]: _6 = const ()"> let result = might_overflow(1);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="22:26-22:43: @15.Call: _29 = might_overflow(const 1_u32) -&gt; [return: bb16, unwind: bb23]
22:17-22:23: @16[0]: FakeRead(ForLet, _29)
23:22-23:34: @16[7]: _50 = const main::promoted[0]
23:22-23:34: @16[8]: _35 = &amp;(*_50)
23:22-23:34: @16[9]: _34 = &amp;(*_35)
23:22-23:34: @16[10]: _33 = move _34 as &amp;[&amp;str] (Pointer(Unsize))
23:36-23:42: @16[18]: _42 = &amp;_29
23:13-23:44: @16[19]: _41 = (move _42,)
23:13-23:44: @16[21]: FakeRead(ForMatchedPlace, _41)
23:13-23:44: @16[23]: _43 = (_41.0: &amp;u32)
23:13-23:44: @16[26]: _45 = &amp;(*_43)
23:13-23:44: @16[28]: _46 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
23:13-23:44: @16.Call: _44 = ArgumentV1::new::&lt;u32&gt;(move _45, move _46) -&gt; [return: bb17, unwind: bb23]
23:13-23:44: @17[2]: _40 = [move _44]
23:13-23:44: @17[5]: _39 = &amp;_40
23:13-23:44: @17[6]: _38 = &amp;(*_39)
23:13-23:44: @17[7]: _37 = move _38 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
23:13-23:44: @17.Call: _32 = Arguments::new_v1(move _33, move _37) -&gt; [return: bb18, unwind: bb23]
23:13-23:44: @18.Call: _31 = _print(move _32) -&gt; [return: bb19, unwind: bb23]
23:13-23:44: @19[6]: _30 = const ()
21:33-24:10: @19[8]: _6 = const ()"> println!("Result: {}", result);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="22:26-22:43: @15.Call: _29 = might_overflow(const 1_u32) -&gt; [return: bb16, unwind: bb23]
22:17-22:23: @16[0]: FakeRead(ForLet, _29)
23:22-23:34: @16[7]: _50 = const main::promoted[0]
23:22-23:34: @16[8]: _35 = &amp;(*_50)
23:22-23:34: @16[9]: _34 = &amp;(*_35)
23:22-23:34: @16[10]: _33 = move _34 as &amp;[&amp;str] (Pointer(Unsize))
23:36-23:42: @16[18]: _42 = &amp;_29
23:13-23:44: @16[19]: _41 = (move _42,)
23:13-23:44: @16[21]: FakeRead(ForMatchedPlace, _41)
23:13-23:44: @16[23]: _43 = (_41.0: &amp;u32)
23:13-23:44: @16[26]: _45 = &amp;(*_43)
23:13-23:44: @16[28]: _46 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
23:13-23:44: @16.Call: _44 = ArgumentV1::new::&lt;u32&gt;(move _45, move _46) -&gt; [return: bb17, unwind: bb23]
23:13-23:44: @17[2]: _40 = [move _44]
23:13-23:44: @17[5]: _39 = &amp;_40
23:13-23:44: @17[6]: _38 = &amp;(*_39)
23:13-23:44: @17[7]: _37 = move _38 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
23:13-23:44: @17.Call: _32 = Arguments::new_v1(move _33, move _37) -&gt; [return: bb18, unwind: bb23]
23:13-23:44: @18.Call: _31 = _print(move _32) -&gt; [return: bb19, unwind: bb23]
23:13-23:44: @19[6]: _30 = const ()
21:33-24:10: @19[8]: _6 = const ()"> }<span class="annotation">⦉@13,15,16,17,18,19</span></span></span><span><span class="code even" style="--layer: 1" title="24:10-24:10: @14.Goto: goto -&gt; bb20"><span class="annotation">@14⦊</span><span class="annotation">⦉@14</span></span></span><span><span class="code odd" style="--layer: 1" title="24:10-24:10: @20.Goto: goto -&gt; bb21"><span class="annotation">@20⦊</span><span class="annotation">⦉@20</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="25:9-25:23: @21[2]: _47 = CheckedSub(_1, const 1_i32)
25:9-25:23: @22[0]: _1 = move (_47.0: i32)"><span class="annotation">@21,22⦊</span>countdown -= 1<span class="annotation">⦉@21,22</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="27:8-27:10: @4[4]: _49 = ()
27:5-27:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _49)
28:2-28:2: @4.Return: return"><span class="annotation">@4⦊</span>Ok(())</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="27:8-27:10: @4[4]: _49 = ()
27:5-27:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _49)
28:2-28:2: @4.Return: return">}<span class="annotation">⦉@4</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,397 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>overflow.might_overflow - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 3"><span class="line"><span class="code" style="--layer: 0">fn might_overflow(to_add: u32) -&gt; u32 {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="5:8-5:14: @0[3]: _4 = _1
5:8-5:18: @0[4]: _3 = Gt(move _4, const 5_u32)
5:8-5:18: @0[6]: FakeRead(ForMatchedPlace, _3)"><span class="annotation">@0⦊</span>to_add &gt; 5<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="6:18-6:47: @3[6]: _61 = const might_overflow::promoted[4]
6:18-6:47: @3[7]: _10 = &amp;(*_61)
6:18-6:47: @3[8]: _9 = &amp;(*_10)
6:18-6:47: @3[9]: _8 = move _9 as &amp;[&amp;str] (Pointer(Unsize))
6:9-6:49: @3[15]: _16 = ()
6:9-6:49: @3[16]: FakeRead(ForMatchedPlace, _16)
6:9-6:49: @3[17]: _60 = const might_overflow::promoted[3]
6:9-6:49: @3[18]: _14 = &amp;(*_60)
6:9-6:49: @3[19]: _13 = &amp;(*_14)
6:9-6:49: @3[20]: _12 = move _13 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
6:9-6:49: @3.Call: _7 = Arguments::new_v1(move _8, move _12) -&gt; [return: bb4, unwind: bb15]
6:9-6:49: @4.Call: _6 = _print(move _7) -&gt; [return: bb5, unwind: bb15]
6:9-6:49: @5[5]: _5 = const ()
5:19-7:6: @5[7]: _2 = const ()
7:6-7:6: @5.Goto: goto -&gt; bb6"><span class="annotation">@1,3,4,5⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="6:18-6:47: @3[6]: _61 = const might_overflow::promoted[4]
6:18-6:47: @3[7]: _10 = &amp;(*_61)
6:18-6:47: @3[8]: _9 = &amp;(*_10)
6:18-6:47: @3[9]: _8 = move _9 as &amp;[&amp;str] (Pointer(Unsize))
6:9-6:49: @3[15]: _16 = ()
6:9-6:49: @3[16]: FakeRead(ForMatchedPlace, _16)
6:9-6:49: @3[17]: _60 = const might_overflow::promoted[3]
6:9-6:49: @3[18]: _14 = &amp;(*_60)
6:9-6:49: @3[19]: _13 = &amp;(*_14)
6:9-6:49: @3[20]: _12 = move _13 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
6:9-6:49: @3.Call: _7 = Arguments::new_v1(move _8, move _12) -&gt; [return: bb4, unwind: bb15]
6:9-6:49: @4.Call: _6 = _print(move _7) -&gt; [return: bb5, unwind: bb15]
6:9-6:49: @5[5]: _5 = const ()
5:19-7:6: @5[7]: _2 = const ()
7:6-7:6: @5.Goto: goto -&gt; bb6"> println!("this will probably overflow");</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="6:18-6:47: @3[6]: _61 = const might_overflow::promoted[4]
6:18-6:47: @3[7]: _10 = &amp;(*_61)
6:18-6:47: @3[8]: _9 = &amp;(*_10)
6:18-6:47: @3[9]: _8 = move _9 as &amp;[&amp;str] (Pointer(Unsize))
6:9-6:49: @3[15]: _16 = ()
6:9-6:49: @3[16]: FakeRead(ForMatchedPlace, _16)
6:9-6:49: @3[17]: _60 = const might_overflow::promoted[3]
6:9-6:49: @3[18]: _14 = &amp;(*_60)
6:9-6:49: @3[19]: _13 = &amp;(*_14)
6:9-6:49: @3[20]: _12 = move _13 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
6:9-6:49: @3.Call: _7 = Arguments::new_v1(move _8, move _12) -&gt; [return: bb4, unwind: bb15]
6:9-6:49: @4.Call: _6 = _print(move _7) -&gt; [return: bb5, unwind: bb15]
6:9-6:49: @5[5]: _5 = const ()
5:19-7:6: @5[7]: _2 = const ()
7:6-7:6: @5.Goto: goto -&gt; bb6"> }<span class="annotation">⦉@1,3,4,5</span></span></span><span><span class="code even" style="--layer: 1" title="7:6-7:6: @2.Goto: goto -&gt; bb6"><span class="annotation">@2⦊</span><span class="annotation">⦉@2</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="8:18-8:30: @6[3]: _18 = CheckedSub(const core::num::&lt;impl u32&gt;::MAX, const 5_u32)
8:18-8:30: @7[0]: _17 = move (_18.0: u32)
8:9-8:15: @7[1]: FakeRead(ForLet, _17)
9:14-9:38: @7[8]: _59 = const might_overflow::promoted[2]
9:14-9:38: @7[9]: _24 = &amp;(*_59)
9:14-9:38: @7[10]: _23 = &amp;(*_24)
9:14-9:38: @7[11]: _22 = move _23 as &amp;[&amp;str] (Pointer(Unsize))
9:40-9:46: @7[19]: _31 = &amp;_17
9:48-9:54: @7[21]: _32 = &amp;_1
9:5-9:56: @7[22]: _30 = (move _31, move _32)
9:5-9:56: @7[25]: FakeRead(ForMatchedPlace, _30)
9:5-9:56: @7[27]: _33 = (_30.0: &amp;u32)
9:5-9:56: @7[29]: _34 = (_30.1: &amp;u32)
9:5-9:56: @7[32]: _36 = &amp;(*_33)
9:5-9:56: @7[34]: _37 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @7.Call: _35 = ArgumentV1::new::&lt;u32&gt;(move _36, move _37) -&gt; [return: bb8, unwind: bb15]
9:5-9:56: @8[4]: _39 = &amp;(*_34)
9:5-9:56: @8[6]: _40 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @8.Call: _38 = ArgumentV1::new::&lt;u32&gt;(move _39, move _40) -&gt; [return: bb9, unwind: bb15]
9:5-9:56: @9[2]: _29 = [move _35, move _38]
9:5-9:56: @9[7]: _28 = &amp;_29
9:5-9:56: @9[8]: _27 = &amp;(*_28)
9:5-9:56: @9[9]: _26 = move _27 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:5-9:56: @9.Call: _21 = Arguments::new_v1(move _22, move _26) -&gt; [return: bb10, unwind: bb15]
9:5-9:56: @10.Call: _20 = _print(move _21) -&gt; [return: bb11, unwind: bb15]
9:5-9:56: @11[6]: _19 = const ()
10:18-10:24: @11[10]: _42 = _1
10:27-10:33: @11[12]: _43 = _17
10:18-10:33: @11[13]: _44 = CheckedAdd(_42, _43)
10:18-10:33: @12[0]: _41 = move (_44.0: u32)
10:9-10:15: @12[3]: FakeRead(ForLet, _41)
11:14-11:47: @12[10]: _58 = const might_overflow::promoted[1]
11:14-11:47: @12[11]: _50 = &amp;(*_58)
11:14-11:47: @12[12]: _49 = &amp;(*_50)
11:14-11:47: @12[13]: _48 = move _49 as &amp;[&amp;str] (Pointer(Unsize))
11:5-11:49: @12[19]: _56 = ()
11:5-11:49: @12[20]: FakeRead(ForMatchedPlace, _56)
11:5-11:49: @12[21]: _57 = const might_overflow::promoted[0]
11:5-11:49: @12[22]: _54 = &amp;(*_57)
11:5-11:49: @12[23]: _53 = &amp;(*_54)
11:5-11:49: @12[24]: _52 = move _53 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
11:5-11:49: @12.Call: _47 = Arguments::new_v1(move _48, move _52) -&gt; [return: bb13, unwind: bb15]
11:5-11:49: @13.Call: _46 = _print(move _47) -&gt; [return: bb14, unwind: bb15]
11:5-11:49: @14[5]: _45 = const ()
12:5-12:11: @14[7]: _0 = _41
13:2-13:2: @14.Return: return"><span class="annotation">@6,7,8,9,10,11,12,13,14⦊</span>add_to = u32::MAX - 5;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="8:18-8:30: @6[3]: _18 = CheckedSub(const core::num::&lt;impl u32&gt;::MAX, const 5_u32)
8:18-8:30: @7[0]: _17 = move (_18.0: u32)
8:9-8:15: @7[1]: FakeRead(ForLet, _17)
9:14-9:38: @7[8]: _59 = const might_overflow::promoted[2]
9:14-9:38: @7[9]: _24 = &amp;(*_59)
9:14-9:38: @7[10]: _23 = &amp;(*_24)
9:14-9:38: @7[11]: _22 = move _23 as &amp;[&amp;str] (Pointer(Unsize))
9:40-9:46: @7[19]: _31 = &amp;_17
9:48-9:54: @7[21]: _32 = &amp;_1
9:5-9:56: @7[22]: _30 = (move _31, move _32)
9:5-9:56: @7[25]: FakeRead(ForMatchedPlace, _30)
9:5-9:56: @7[27]: _33 = (_30.0: &amp;u32)
9:5-9:56: @7[29]: _34 = (_30.1: &amp;u32)
9:5-9:56: @7[32]: _36 = &amp;(*_33)
9:5-9:56: @7[34]: _37 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @7.Call: _35 = ArgumentV1::new::&lt;u32&gt;(move _36, move _37) -&gt; [return: bb8, unwind: bb15]
9:5-9:56: @8[4]: _39 = &amp;(*_34)
9:5-9:56: @8[6]: _40 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @8.Call: _38 = ArgumentV1::new::&lt;u32&gt;(move _39, move _40) -&gt; [return: bb9, unwind: bb15]
9:5-9:56: @9[2]: _29 = [move _35, move _38]
9:5-9:56: @9[7]: _28 = &amp;_29
9:5-9:56: @9[8]: _27 = &amp;(*_28)
9:5-9:56: @9[9]: _26 = move _27 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:5-9:56: @9.Call: _21 = Arguments::new_v1(move _22, move _26) -&gt; [return: bb10, unwind: bb15]
9:5-9:56: @10.Call: _20 = _print(move _21) -&gt; [return: bb11, unwind: bb15]
9:5-9:56: @11[6]: _19 = const ()
10:18-10:24: @11[10]: _42 = _1
10:27-10:33: @11[12]: _43 = _17
10:18-10:33: @11[13]: _44 = CheckedAdd(_42, _43)
10:18-10:33: @12[0]: _41 = move (_44.0: u32)
10:9-10:15: @12[3]: FakeRead(ForLet, _41)
11:14-11:47: @12[10]: _58 = const might_overflow::promoted[1]
11:14-11:47: @12[11]: _50 = &amp;(*_58)
11:14-11:47: @12[12]: _49 = &amp;(*_50)
11:14-11:47: @12[13]: _48 = move _49 as &amp;[&amp;str] (Pointer(Unsize))
11:5-11:49: @12[19]: _56 = ()
11:5-11:49: @12[20]: FakeRead(ForMatchedPlace, _56)
11:5-11:49: @12[21]: _57 = const might_overflow::promoted[0]
11:5-11:49: @12[22]: _54 = &amp;(*_57)
11:5-11:49: @12[23]: _53 = &amp;(*_54)
11:5-11:49: @12[24]: _52 = move _53 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
11:5-11:49: @12.Call: _47 = Arguments::new_v1(move _48, move _52) -&gt; [return: bb13, unwind: bb15]
11:5-11:49: @13.Call: _46 = _print(move _47) -&gt; [return: bb14, unwind: bb15]
11:5-11:49: @14[5]: _45 = const ()
12:5-12:11: @14[7]: _0 = _41
13:2-13:2: @14.Return: return"> println!("does {} + {} overflow?", add_to, to_add);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="8:18-8:30: @6[3]: _18 = CheckedSub(const core::num::&lt;impl u32&gt;::MAX, const 5_u32)
8:18-8:30: @7[0]: _17 = move (_18.0: u32)
8:9-8:15: @7[1]: FakeRead(ForLet, _17)
9:14-9:38: @7[8]: _59 = const might_overflow::promoted[2]
9:14-9:38: @7[9]: _24 = &amp;(*_59)
9:14-9:38: @7[10]: _23 = &amp;(*_24)
9:14-9:38: @7[11]: _22 = move _23 as &amp;[&amp;str] (Pointer(Unsize))
9:40-9:46: @7[19]: _31 = &amp;_17
9:48-9:54: @7[21]: _32 = &amp;_1
9:5-9:56: @7[22]: _30 = (move _31, move _32)
9:5-9:56: @7[25]: FakeRead(ForMatchedPlace, _30)
9:5-9:56: @7[27]: _33 = (_30.0: &amp;u32)
9:5-9:56: @7[29]: _34 = (_30.1: &amp;u32)
9:5-9:56: @7[32]: _36 = &amp;(*_33)
9:5-9:56: @7[34]: _37 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @7.Call: _35 = ArgumentV1::new::&lt;u32&gt;(move _36, move _37) -&gt; [return: bb8, unwind: bb15]
9:5-9:56: @8[4]: _39 = &amp;(*_34)
9:5-9:56: @8[6]: _40 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @8.Call: _38 = ArgumentV1::new::&lt;u32&gt;(move _39, move _40) -&gt; [return: bb9, unwind: bb15]
9:5-9:56: @9[2]: _29 = [move _35, move _38]
9:5-9:56: @9[7]: _28 = &amp;_29
9:5-9:56: @9[8]: _27 = &amp;(*_28)
9:5-9:56: @9[9]: _26 = move _27 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:5-9:56: @9.Call: _21 = Arguments::new_v1(move _22, move _26) -&gt; [return: bb10, unwind: bb15]
9:5-9:56: @10.Call: _20 = _print(move _21) -&gt; [return: bb11, unwind: bb15]
9:5-9:56: @11[6]: _19 = const ()
10:18-10:24: @11[10]: _42 = _1
10:27-10:33: @11[12]: _43 = _17
10:18-10:33: @11[13]: _44 = CheckedAdd(_42, _43)
10:18-10:33: @12[0]: _41 = move (_44.0: u32)
10:9-10:15: @12[3]: FakeRead(ForLet, _41)
11:14-11:47: @12[10]: _58 = const might_overflow::promoted[1]
11:14-11:47: @12[11]: _50 = &amp;(*_58)
11:14-11:47: @12[12]: _49 = &amp;(*_50)
11:14-11:47: @12[13]: _48 = move _49 as &amp;[&amp;str] (Pointer(Unsize))
11:5-11:49: @12[19]: _56 = ()
11:5-11:49: @12[20]: FakeRead(ForMatchedPlace, _56)
11:5-11:49: @12[21]: _57 = const might_overflow::promoted[0]
11:5-11:49: @12[22]: _54 = &amp;(*_57)
11:5-11:49: @12[23]: _53 = &amp;(*_54)
11:5-11:49: @12[24]: _52 = move _53 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
11:5-11:49: @12.Call: _47 = Arguments::new_v1(move _48, move _52) -&gt; [return: bb13, unwind: bb15]
11:5-11:49: @13.Call: _46 = _print(move _47) -&gt; [return: bb14, unwind: bb15]
11:5-11:49: @14[5]: _45 = const ()
12:5-12:11: @14[7]: _0 = _41
13:2-13:2: @14.Return: return"> let result = to_add + add_to;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="8:18-8:30: @6[3]: _18 = CheckedSub(const core::num::&lt;impl u32&gt;::MAX, const 5_u32)
8:18-8:30: @7[0]: _17 = move (_18.0: u32)
8:9-8:15: @7[1]: FakeRead(ForLet, _17)
9:14-9:38: @7[8]: _59 = const might_overflow::promoted[2]
9:14-9:38: @7[9]: _24 = &amp;(*_59)
9:14-9:38: @7[10]: _23 = &amp;(*_24)
9:14-9:38: @7[11]: _22 = move _23 as &amp;[&amp;str] (Pointer(Unsize))
9:40-9:46: @7[19]: _31 = &amp;_17
9:48-9:54: @7[21]: _32 = &amp;_1
9:5-9:56: @7[22]: _30 = (move _31, move _32)
9:5-9:56: @7[25]: FakeRead(ForMatchedPlace, _30)
9:5-9:56: @7[27]: _33 = (_30.0: &amp;u32)
9:5-9:56: @7[29]: _34 = (_30.1: &amp;u32)
9:5-9:56: @7[32]: _36 = &amp;(*_33)
9:5-9:56: @7[34]: _37 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @7.Call: _35 = ArgumentV1::new::&lt;u32&gt;(move _36, move _37) -&gt; [return: bb8, unwind: bb15]
9:5-9:56: @8[4]: _39 = &amp;(*_34)
9:5-9:56: @8[6]: _40 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @8.Call: _38 = ArgumentV1::new::&lt;u32&gt;(move _39, move _40) -&gt; [return: bb9, unwind: bb15]
9:5-9:56: @9[2]: _29 = [move _35, move _38]
9:5-9:56: @9[7]: _28 = &amp;_29
9:5-9:56: @9[8]: _27 = &amp;(*_28)
9:5-9:56: @9[9]: _26 = move _27 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:5-9:56: @9.Call: _21 = Arguments::new_v1(move _22, move _26) -&gt; [return: bb10, unwind: bb15]
9:5-9:56: @10.Call: _20 = _print(move _21) -&gt; [return: bb11, unwind: bb15]
9:5-9:56: @11[6]: _19 = const ()
10:18-10:24: @11[10]: _42 = _1
10:27-10:33: @11[12]: _43 = _17
10:18-10:33: @11[13]: _44 = CheckedAdd(_42, _43)
10:18-10:33: @12[0]: _41 = move (_44.0: u32)
10:9-10:15: @12[3]: FakeRead(ForLet, _41)
11:14-11:47: @12[10]: _58 = const might_overflow::promoted[1]
11:14-11:47: @12[11]: _50 = &amp;(*_58)
11:14-11:47: @12[12]: _49 = &amp;(*_50)
11:14-11:47: @12[13]: _48 = move _49 as &amp;[&amp;str] (Pointer(Unsize))
11:5-11:49: @12[19]: _56 = ()
11:5-11:49: @12[20]: FakeRead(ForMatchedPlace, _56)
11:5-11:49: @12[21]: _57 = const might_overflow::promoted[0]
11:5-11:49: @12[22]: _54 = &amp;(*_57)
11:5-11:49: @12[23]: _53 = &amp;(*_54)
11:5-11:49: @12[24]: _52 = move _53 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
11:5-11:49: @12.Call: _47 = Arguments::new_v1(move _48, move _52) -&gt; [return: bb13, unwind: bb15]
11:5-11:49: @13.Call: _46 = _print(move _47) -&gt; [return: bb14, unwind: bb15]
11:5-11:49: @14[5]: _45 = const ()
12:5-12:11: @14[7]: _0 = _41
13:2-13:2: @14.Return: return"> println!("continuing after overflow check");</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="8:18-8:30: @6[3]: _18 = CheckedSub(const core::num::&lt;impl u32&gt;::MAX, const 5_u32)
8:18-8:30: @7[0]: _17 = move (_18.0: u32)
8:9-8:15: @7[1]: FakeRead(ForLet, _17)
9:14-9:38: @7[8]: _59 = const might_overflow::promoted[2]
9:14-9:38: @7[9]: _24 = &amp;(*_59)
9:14-9:38: @7[10]: _23 = &amp;(*_24)
9:14-9:38: @7[11]: _22 = move _23 as &amp;[&amp;str] (Pointer(Unsize))
9:40-9:46: @7[19]: _31 = &amp;_17
9:48-9:54: @7[21]: _32 = &amp;_1
9:5-9:56: @7[22]: _30 = (move _31, move _32)
9:5-9:56: @7[25]: FakeRead(ForMatchedPlace, _30)
9:5-9:56: @7[27]: _33 = (_30.0: &amp;u32)
9:5-9:56: @7[29]: _34 = (_30.1: &amp;u32)
9:5-9:56: @7[32]: _36 = &amp;(*_33)
9:5-9:56: @7[34]: _37 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @7.Call: _35 = ArgumentV1::new::&lt;u32&gt;(move _36, move _37) -&gt; [return: bb8, unwind: bb15]
9:5-9:56: @8[4]: _39 = &amp;(*_34)
9:5-9:56: @8[6]: _40 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @8.Call: _38 = ArgumentV1::new::&lt;u32&gt;(move _39, move _40) -&gt; [return: bb9, unwind: bb15]
9:5-9:56: @9[2]: _29 = [move _35, move _38]
9:5-9:56: @9[7]: _28 = &amp;_29
9:5-9:56: @9[8]: _27 = &amp;(*_28)
9:5-9:56: @9[9]: _26 = move _27 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:5-9:56: @9.Call: _21 = Arguments::new_v1(move _22, move _26) -&gt; [return: bb10, unwind: bb15]
9:5-9:56: @10.Call: _20 = _print(move _21) -&gt; [return: bb11, unwind: bb15]
9:5-9:56: @11[6]: _19 = const ()
10:18-10:24: @11[10]: _42 = _1
10:27-10:33: @11[12]: _43 = _17
10:18-10:33: @11[13]: _44 = CheckedAdd(_42, _43)
10:18-10:33: @12[0]: _41 = move (_44.0: u32)
10:9-10:15: @12[3]: FakeRead(ForLet, _41)
11:14-11:47: @12[10]: _58 = const might_overflow::promoted[1]
11:14-11:47: @12[11]: _50 = &amp;(*_58)
11:14-11:47: @12[12]: _49 = &amp;(*_50)
11:14-11:47: @12[13]: _48 = move _49 as &amp;[&amp;str] (Pointer(Unsize))
11:5-11:49: @12[19]: _56 = ()
11:5-11:49: @12[20]: FakeRead(ForMatchedPlace, _56)
11:5-11:49: @12[21]: _57 = const might_overflow::promoted[0]
11:5-11:49: @12[22]: _54 = &amp;(*_57)
11:5-11:49: @12[23]: _53 = &amp;(*_54)
11:5-11:49: @12[24]: _52 = move _53 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
11:5-11:49: @12.Call: _47 = Arguments::new_v1(move _48, move _52) -&gt; [return: bb13, unwind: bb15]
11:5-11:49: @13.Call: _46 = _print(move _47) -&gt; [return: bb14, unwind: bb15]
11:5-11:49: @14[5]: _45 = const ()
12:5-12:11: @14[7]: _0 = _41
13:2-13:2: @14.Return: return"> result</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="8:18-8:30: @6[3]: _18 = CheckedSub(const core::num::&lt;impl u32&gt;::MAX, const 5_u32)
8:18-8:30: @7[0]: _17 = move (_18.0: u32)
8:9-8:15: @7[1]: FakeRead(ForLet, _17)
9:14-9:38: @7[8]: _59 = const might_overflow::promoted[2]
9:14-9:38: @7[9]: _24 = &amp;(*_59)
9:14-9:38: @7[10]: _23 = &amp;(*_24)
9:14-9:38: @7[11]: _22 = move _23 as &amp;[&amp;str] (Pointer(Unsize))
9:40-9:46: @7[19]: _31 = &amp;_17
9:48-9:54: @7[21]: _32 = &amp;_1
9:5-9:56: @7[22]: _30 = (move _31, move _32)
9:5-9:56: @7[25]: FakeRead(ForMatchedPlace, _30)
9:5-9:56: @7[27]: _33 = (_30.0: &amp;u32)
9:5-9:56: @7[29]: _34 = (_30.1: &amp;u32)
9:5-9:56: @7[32]: _36 = &amp;(*_33)
9:5-9:56: @7[34]: _37 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @7.Call: _35 = ArgumentV1::new::&lt;u32&gt;(move _36, move _37) -&gt; [return: bb8, unwind: bb15]
9:5-9:56: @8[4]: _39 = &amp;(*_34)
9:5-9:56: @8[6]: _40 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
9:5-9:56: @8.Call: _38 = ArgumentV1::new::&lt;u32&gt;(move _39, move _40) -&gt; [return: bb9, unwind: bb15]
9:5-9:56: @9[2]: _29 = [move _35, move _38]
9:5-9:56: @9[7]: _28 = &amp;_29
9:5-9:56: @9[8]: _27 = &amp;(*_28)
9:5-9:56: @9[9]: _26 = move _27 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:5-9:56: @9.Call: _21 = Arguments::new_v1(move _22, move _26) -&gt; [return: bb10, unwind: bb15]
9:5-9:56: @10.Call: _20 = _print(move _21) -&gt; [return: bb11, unwind: bb15]
9:5-9:56: @11[6]: _19 = const ()
10:18-10:24: @11[10]: _42 = _1
10:27-10:33: @11[12]: _43 = _17
10:18-10:33: @11[13]: _44 = CheckedAdd(_42, _43)
10:18-10:33: @12[0]: _41 = move (_44.0: u32)
10:9-10:15: @12[3]: FakeRead(ForLet, _41)
11:14-11:47: @12[10]: _58 = const might_overflow::promoted[1]
11:14-11:47: @12[11]: _50 = &amp;(*_58)
11:14-11:47: @12[12]: _49 = &amp;(*_50)
11:14-11:47: @12[13]: _48 = move _49 as &amp;[&amp;str] (Pointer(Unsize))
11:5-11:49: @12[19]: _56 = ()
11:5-11:49: @12[20]: FakeRead(ForMatchedPlace, _56)
11:5-11:49: @12[21]: _57 = const might_overflow::promoted[0]
11:5-11:49: @12[22]: _54 = &amp;(*_57)
11:5-11:49: @12[23]: _53 = &amp;(*_54)
11:5-11:49: @12[24]: _52 = move _53 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
11:5-11:49: @12.Call: _47 = Arguments::new_v1(move _48, move _52) -&gt; [return: bb13, unwind: bb15]
11:5-11:49: @13.Call: _46 = _print(move _47) -&gt; [return: bb14, unwind: bb15]
11:5-11:49: @14[5]: _45 = const ()
12:5-12:11: @14[7]: _0 = _41
13:2-13:2: @14.Return: return">}<span class="annotation">⦉@6,7,8,9,10,11,12,13,14</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,103 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.panic_unwind/panic_unwind.main.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>panic_unwind.main - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 12"><span class="line"><span class="code" style="--layer: 0">fn main() -&gt; Result&lt;(),u8&gt; {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="14:25-14:27: @0[1]: _1 = const 10_i32
14:9-14:22: @0[2]: FakeRead(ForLet, _1)"><span class="annotation">@0⦊</span>mut countdown = 10<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> while </span><span><span class="code odd" style="--layer: 1" title="15:11-15:20: @2[2]: _5 = _1
15:11-15:24: @2[3]: _4 = Gt(move _5, const 0_i32)
15:11-15:24: @2[5]: FakeRead(ForMatchedPlace, _4)"><span class="annotation">@1,2⦊</span>countdown &gt; 0<span class="annotation">⦉@1,2</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="16:12-16:21: @5[3]: _8 = _1
16:12-16:26: @5[4]: _7 = Eq(move _8, const 1_i32)
16:12-16:26: @5[6]: FakeRead(ForMatchedPlace, _7)"><span class="annotation">@3,5⦊</span>countdown == 1<span class="annotation">⦉@3,5</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="17:13-17:30: @8.Call: _9 = might_panic(const true) -&gt; [return: bb9, unwind: bb17]
16:27-18:10: @9[1]: _6 = const ()"><span class="annotation">@6,8,9⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="17:13-17:30: @8.Call: _9 = might_panic(const true) -&gt; [return: bb9, unwind: bb17]
16:27-18:10: @9[1]: _6 = const ()"> might_panic(true);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="17:13-17:30: @8.Call: _9 = might_panic(const true) -&gt; [return: bb9, unwind: bb17]
16:27-18:10: @9[1]: _6 = const ()"> }<span class="annotation">⦉@6,8,9</span></span></span><span class="code" style="--layer: 0"> else if </span><span><span class="code even" style="--layer: 1" title="18:19-18:28: @7[2]: _11 = _1
18:19-18:32: @7[3]: _10 = Lt(move _11, const 5_i32)
18:19-18:32: @7[5]: FakeRead(ForMatchedPlace, _10)"><span class="annotation">@7⦊</span>countdown &lt; 5<span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="19:13-19:31: @12.Call: _12 = might_panic(const false) -&gt; [return: bb13, unwind: bb17]
18:33-20:10: @13[1]: _6 = const ()"><span class="annotation">@10,12,13⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:13-19:31: @12.Call: _12 = might_panic(const false) -&gt; [return: bb13, unwind: bb17]
18:33-20:10: @13[1]: _6 = const ()"> might_panic(false);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="19:13-19:31: @12.Call: _12 = might_panic(const false) -&gt; [return: bb13, unwind: bb17]
18:33-20:10: @13[1]: _6 = const ()"> }<span class="annotation">⦉@10,12,13</span></span></span><span><span class="code even" style="--layer: 1" title="20:10-20:10: @11.Goto: goto -&gt; bb14"><span class="annotation">@11⦊</span><span class="annotation">⦉@11</span></span></span><span><span class="code odd" style="--layer: 1" title="20:10-20:10: @14.Goto: goto -&gt; bb15"><span class="annotation">@14⦊</span><span class="annotation">⦉@14</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="21:9-21:23: @15[2]: _13 = CheckedSub(_1, const 1_i32)
21:9-21:23: @16[0]: _1 = move (_13.0: i32)"><span class="annotation">@15,16⦊</span>countdown -= 1<span class="annotation">⦉@15,16</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="23:8-23:10: @4[4]: _15 = ()
23:5-23:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _15)
24:2-24:2: @4.Return: return"><span class="annotation">@4⦊</span>Ok(())</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="23:8-23:10: @4[4]: _15 = ()
23:5-23:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _15)
24:2-24:2: @4.Return: return">}<span class="annotation">⦉@4</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,164 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>panic_unwind.might_panic - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 3"><span class="line"><span class="code" style="--layer: 0">fn might_panic(should_panic: bool) {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="5:8-5:20: @0[1]: _2 = _1
5:8-5:20: @0[2]: FakeRead(ForMatchedPlace, _2)"><span class="annotation">@0⦊</span>should_panic<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="6:18-6:32: @3[6]: _33 = const might_panic::promoted[3]
6:18-6:32: @3[7]: _9 = &amp;(*_33)
6:18-6:32: @3[8]: _8 = &amp;(*_9)
6:18-6:32: @3[9]: _7 = move _8 as &amp;[&amp;str] (Pointer(Unsize))
6:9-6:34: @3[15]: _15 = ()
6:9-6:34: @3[16]: FakeRead(ForMatchedPlace, _15)
6:9-6:34: @3[17]: _32 = const might_panic::promoted[2]
6:9-6:34: @3[18]: _13 = &amp;(*_32)
6:9-6:34: @3[19]: _12 = &amp;(*_13)
6:9-6:34: @3[20]: _11 = move _12 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
6:9-6:34: @3.Call: _6 = Arguments::new_v1(move _7, move _11) -&gt; [return: bb4, unwind: bb8]
6:9-6:34: @4.Call: _5 = _print(move _6) -&gt; [return: bb5, unwind: bb8]
6:9-6:34: @5[5]: _4 = const ()
7:9-7:26: @5.Call: begin_panic::&lt;&amp;str&gt;(const &quot;panics&quot;) -&gt; bb8"><span class="annotation">@1,3,4,5⦊</span>println!("panicking...");</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="6:18-6:32: @3[6]: _33 = const might_panic::promoted[3]
6:18-6:32: @3[7]: _9 = &amp;(*_33)
6:18-6:32: @3[8]: _8 = &amp;(*_9)
6:18-6:32: @3[9]: _7 = move _8 as &amp;[&amp;str] (Pointer(Unsize))
6:9-6:34: @3[15]: _15 = ()
6:9-6:34: @3[16]: FakeRead(ForMatchedPlace, _15)
6:9-6:34: @3[17]: _32 = const might_panic::promoted[2]
6:9-6:34: @3[18]: _13 = &amp;(*_32)
6:9-6:34: @3[19]: _12 = &amp;(*_13)
6:9-6:34: @3[20]: _11 = move _12 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
6:9-6:34: @3.Call: _6 = Arguments::new_v1(move _7, move _11) -&gt; [return: bb4, unwind: bb8]
6:9-6:34: @4.Call: _5 = _print(move _6) -&gt; [return: bb5, unwind: bb8]
6:9-6:34: @5[5]: _4 = const ()
7:9-7:26: @5.Call: begin_panic::&lt;&amp;str&gt;(const &quot;panics&quot;) -&gt; bb8"> panic!("panics");<span class="annotation">⦉@1,3,4,5</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> } else </span><span><span class="code even" style="--layer: 1" title="9:18-9:31: @2[6]: _31 = const might_panic::promoted[1]
9:18-9:31: @2[7]: _23 = &amp;(*_31)
9:18-9:31: @2[8]: _22 = &amp;(*_23)
9:18-9:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
9:9-9:33: @2[15]: _29 = ()
9:9-9:33: @2[16]: FakeRead(ForMatchedPlace, _29)
9:9-9:33: @2[17]: _30 = const might_panic::promoted[0]
9:9-9:33: @2[18]: _27 = &amp;(*_30)
9:9-9:33: @2[19]: _26 = &amp;(*_27)
9:9-9:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:9-9:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
9:9-9:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
9:9-9:33: @7[5]: _18 = const ()
8:12-10:6: @7[7]: _0 = const ()
11:2-11:2: @7.Return: return"><span class="annotation">@2,6,7⦊</span>{</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="9:18-9:31: @2[6]: _31 = const might_panic::promoted[1]
9:18-9:31: @2[7]: _23 = &amp;(*_31)
9:18-9:31: @2[8]: _22 = &amp;(*_23)
9:18-9:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
9:9-9:33: @2[15]: _29 = ()
9:9-9:33: @2[16]: FakeRead(ForMatchedPlace, _29)
9:9-9:33: @2[17]: _30 = const might_panic::promoted[0]
9:9-9:33: @2[18]: _27 = &amp;(*_30)
9:9-9:33: @2[19]: _26 = &amp;(*_27)
9:9-9:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:9-9:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
9:9-9:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
9:9-9:33: @7[5]: _18 = const ()
8:12-10:6: @7[7]: _0 = const ()
11:2-11:2: @7.Return: return"> println!("Don't Panic");</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="9:18-9:31: @2[6]: _31 = const might_panic::promoted[1]
9:18-9:31: @2[7]: _23 = &amp;(*_31)
9:18-9:31: @2[8]: _22 = &amp;(*_23)
9:18-9:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
9:9-9:33: @2[15]: _29 = ()
9:9-9:33: @2[16]: FakeRead(ForMatchedPlace, _29)
9:9-9:33: @2[17]: _30 = const might_panic::promoted[0]
9:9-9:33: @2[18]: _27 = &amp;(*_30)
9:9-9:33: @2[19]: _26 = &amp;(*_27)
9:9-9:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:9-9:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
9:9-9:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
9:9-9:33: @7[5]: _18 = const ()
8:12-10:6: @7[7]: _0 = const ()
11:2-11:2: @7.Return: return"> }</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="9:18-9:31: @2[6]: _31 = const might_panic::promoted[1]
9:18-9:31: @2[7]: _23 = &amp;(*_31)
9:18-9:31: @2[8]: _22 = &amp;(*_23)
9:18-9:31: @2[9]: _21 = move _22 as &amp;[&amp;str] (Pointer(Unsize))
9:9-9:33: @2[15]: _29 = ()
9:9-9:33: @2[16]: FakeRead(ForMatchedPlace, _29)
9:9-9:33: @2[17]: _30 = const might_panic::promoted[0]
9:9-9:33: @2[18]: _27 = &amp;(*_30)
9:9-9:33: @2[19]: _26 = &amp;(*_27)
9:9-9:33: @2[20]: _25 = move _26 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
9:9-9:33: @2.Call: _20 = Arguments::new_v1(move _21, move _25) -&gt; [return: bb6, unwind: bb8]
9:9-9:33: @6.Call: _19 = _print(move _20) -&gt; [return: bb7, unwind: bb8]
9:9-9:33: @7[5]: _18 = const ()
8:12-10:6: @7[7]: _0 = const ()
11:2-11:2: @7.Return: return">}<span class="annotation">⦉@2,6,7</span></span></span></span></div>
</body>
</html>

View file

@ -133,9 +133,12 @@ For revisions in Pull Requests (PR):
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="27:13-27:18: @12[0]: _0 = const ()"><span class="annotation">@10,12⦊</span>break<span class="annotation">⦉@10,12</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> ;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="30:9-32:10: @13[0]: _5 = move (_13.0: i32)"><span class="annotation">@13⦊</span>countdown</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="30:9-32:10: @13[0]: _5 = move (_13.0: i32)"> -=</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="30:9-32:10: @13[0]: _5 = move (_13.0: i32)"> 1<span class="annotation">⦉@13</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="30:9-32:10: @11[3]: _13 = CheckedSub(_5, const 1_i32)
30:9-32:10: @13[0]: _5 = move (_13.0: i32)"><span class="annotation">@11,13⦊</span>countdown</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="30:9-32:10: @11[3]: _13 = CheckedSub(_5, const 1_i32)
30:9-32:10: @13[0]: _5 = move (_13.0: i32)"> -=</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="30:9-32:10: @11[3]: _13 = CheckedSub(_5, const 1_i32)
30:9-32:10: @13[0]: _5 = move (_13.0: i32)"> 1<span class="annotation">⦉@11,13</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> ;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span><span><span class="code even" style="--layer: 1" title="34:6-34:6: @7.Goto: goto -&gt; bb8"><span class="annotation">@7⦊</span><span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="35:2-35:2: @12.Return: return"><span class="annotation">@10,12⦊</span><span class="annotation">⦉@10,12</span></span></span></span></div>

View file

@ -79,33 +79,38 @@ For revisions in Pull Requests (PR):
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="17:9-17:10: @8[1]: _13 = ((_9 as Some).0: i32)
17:9-17:10: @8[3]: _14 = _13
17:9-17:10: @8[4]: _7 = move _14
17:9-17:10: @8[5]: _8 = const ()"><span class="annotation">@6,8⦊</span>_<span class="annotation">⦉@6,8</span></span></span><span class="code" style="--layer: 0"></span></span>
17:9-17:10: @8[5]: _8 = const ()"><span class="annotation">@6,8,9</span>_<span class="annotation">⦉@6,8,9</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> in</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="19:9-19:14: @3[5]: _11 = &amp;mut _5
19:9-19:14: @3[6]: _10 = &amp;mut (*_11)
19:9-19:14: @3.Call: _9 = &lt;std::ops::Range&lt;i32&gt; as Iterator&gt;::next(move _10) -&gt; [return: bb4, unwind: bb40]
19:9-19:14: @4[1]: FakeRead(ForMatchedPlace, _9)"><span class="annotation">@2,3,4⦊</span>0..10<span class="annotation">⦉@2,3,4</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="21:9-22:17: @9[0]: _1 = move (_17.0: i32)
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="21:9-22:17: @8[12]: _17 = CheckedSub(_1, const 1_i32)
21:9-22:17: @9[0]: _1 = move (_17.0: i32)
25:13-25:22: @9[3]: _19 = _1
25:13-25:26: @9[4]: _18 = Lt(move _19, const 5_i32)
25:13-25:26: @9[6]: FakeRead(ForMatchedPlace, _18)"><span class="annotation">@9⦊</span>countdown</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @9[0]: _1 = move (_17.0: i32)
25:13-25:26: @9[6]: FakeRead(ForMatchedPlace, _18)"><span class="annotation">@6,8,9⦊</span>countdown</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @8[12]: _17 = CheckedSub(_1, const 1_i32)
21:9-22:17: @9[0]: _1 = move (_17.0: i32)
25:13-25:22: @9[3]: _19 = _1
25:13-25:26: @9[4]: _18 = Lt(move _19, const 5_i32)
25:13-25:26: @9[6]: FakeRead(ForMatchedPlace, _18)"> -= 1</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @9[0]: _1 = move (_17.0: i32)
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @8[12]: _17 = CheckedSub(_1, const 1_i32)
21:9-22:17: @9[0]: _1 = move (_17.0: i32)
25:13-25:22: @9[3]: _19 = _1
25:13-25:26: @9[4]: _18 = Lt(move _19, const 5_i32)
25:13-25:26: @9[6]: FakeRead(ForMatchedPlace, _18)"> ;</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @9[0]: _1 = move (_17.0: i32)
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @8[12]: _17 = CheckedSub(_1, const 1_i32)
21:9-22:17: @9[0]: _1 = move (_17.0: i32)
25:13-25:22: @9[3]: _19 = _1
25:13-25:26: @9[4]: _18 = Lt(move _19, const 5_i32)
25:13-25:26: @9[6]: FakeRead(ForMatchedPlace, _18)"> if</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @9[0]: _1 = move (_17.0: i32)
<span class="line"><span class="code odd" style="--layer: 1" title="21:9-22:17: @8[12]: _17 = CheckedSub(_1, const 1_i32)
21:9-22:17: @9[0]: _1 = move (_17.0: i32)
25:13-25:22: @9[3]: _19 = _1
25:13-25:26: @9[4]: _18 = Lt(move _19, const 5_i32)
25:13-25:26: @9[6]: FakeRead(ForMatchedPlace, _18)"> countdown &lt; 5<span class="annotation">⦉@9</span></span></span><span class="code" style="--layer: 0"></span></span>
25:13-25:26: @9[6]: FakeRead(ForMatchedPlace, _18)"> countdown &lt; 5<span class="annotation">⦉@6,8,9</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="27:13-27:41: @12.Call: _22 = call(const true) -&gt; [return: bb13, unwind: bb40]"><span class="annotation">@10,12,13,14⦊</span>call(/*return_error=*/ true)<span class="annotation">⦉@10,12,13,14</span></span></span><span><span class="code odd" style="--layer: 1" title="27:41-27:42: @18[1]: _24 = ((_21 as Err).0: ())
27:41-27:42: @18[4]: _27 = _24

View file

@ -115,9 +115,12 @@ For revisions in Pull Requests (PR):
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> ;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="30:9-32:10: @12[0]: _1 = move (_13.0: i32)"><span class="annotation">@12⦊</span>countdown</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="30:9-32:10: @12[0]: _1 = move (_13.0: i32)"> -=</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="30:9-32:10: @12[0]: _1 = move (_13.0: i32)"> 1<span class="annotation">⦉@12</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="30:9-32:10: @7[3]: _13 = CheckedSub(_1, const 1_i32)
30:9-32:10: @12[0]: _1 = move (_13.0: i32)"><span class="annotation">@7,12⦊</span>countdown</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="30:9-32:10: @7[3]: _13 = CheckedSub(_1, const 1_i32)
30:9-32:10: @12[0]: _1 = move (_13.0: i32)"> -=</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="30:9-32:10: @7[3]: _13 = CheckedSub(_1, const 1_i32)
30:9-32:10: @12[0]: _1 = move (_13.0: i32)"> 1<span class="annotation">⦉@7,12</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> ;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="35:8-35:10: @4[4]: _15 = ()

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.yield/yield.main-%7Bclosure%230%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>yield.main-{closure#0} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 7"><span class="line"> <span class="code" style="--layer: 0">|| {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="9:9-9:16: @0.Yield: _3 = yield(const 1_i32) -&gt; [resume: bb1, drop: bb2]"><span class="annotation">@0⦊</span>yield 1<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> return </span><span><span class="code odd" style="--layer: 1" title="10:16-10:21: @1[1]: _0 = const &quot;foo&quot;
11:6-11:6: @1.Return: return"><span class="annotation">@1⦊</span>"foo"</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="10:16-10:21: @1[1]: _0 = const &quot;foo&quot;
11:6-11:6: @1.Return: return"> }<span class="annotation">⦉@1</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,81 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.yield/yield.main-%7Bclosure%231%7D.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>yield.main-{closure#1} - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 21"><span class="line"> <span class="code" style="--layer: 0">|| {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="23:9-23:16: @0.Yield: _3 = yield(const 1_i32) -&gt; [resume: bb1, drop: bb6]"><span class="annotation">@0⦊</span>yield 1<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="24:9-24:16: @1.Yield: _4 = yield(const 2_i32) -&gt; [resume: bb2, drop: bb5]"><span class="annotation">@1⦊</span>yield 2<span class="annotation">⦉@1</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="25:9-25:16: @2.Yield: _5 = yield(const 3_i32) -&gt; [resume: bb3, drop: bb4]"><span class="annotation">@2⦊</span>yield 3<span class="annotation">⦉@2</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> return </span><span><span class="code odd" style="--layer: 1" title="26:16-26:21: @3[1]: _0 = const &quot;foo&quot;
27:6-27:6: @3.Return: return"><span class="annotation">@3⦊</span>"foo"</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="26:16-26:21: @3[1]: _0 = const &quot;foo&quot;
27:6-27:6: @3.Return: return"> }<span class="annotation">⦉@3</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,138 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.yield/yield.main.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>yield.main - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 6"><span class="line"><span class="code" style="--layer: 0">fn main() {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="8:9-8:22: @0[2]: FakeRead(ForLet, _1)"><span class="annotation">@0,1,2⦊</span>mut generator<span class="annotation">⦉@0,1,2</span></span></span><span class="code" style="--layer: 0"> = || {</span></span>
<span class="line"><span class="code" style="--layer: 0"> yield 1;</span></span>
<span class="line"><span class="code" style="--layer: 0"> return "foo"</span></span>
<span class="line"><span class="code" style="--layer: 0"> };</span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> match </span><span><span class="code even" style="--layer: 1" title="13:20-13:34: @0[7]: _5 = &amp;mut _1
13:11-13:35: @0.Call: _4 = Pin::&lt;&amp;mut [generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}]&gt;::new(move _5) -&gt; [return: bb1, unwind: bb26]
13:43-13:45: @1[2]: _6 = ()
13:11-13:46: @1.Call: _3 = &lt;[generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}] as Generator&gt;::resume(move _4, move _6) -&gt; [return: bb2, unwind: bb26]
13:11-13:46: @2[2]: FakeRead(ForMatchedPlace, _3)
14:9-14:35: @2[3]: _7 = discriminant(_3)"><span class="annotation">@0,1,2⦊</span>Pin::new(&amp;mut generator).resume(()) {</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="13:20-13:34: @0[7]: _5 = &amp;mut _1
13:11-13:35: @0.Call: _4 = Pin::&lt;&amp;mut [generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}]&gt;::new(move _5) -&gt; [return: bb1, unwind: bb26]
13:43-13:45: @1[2]: _6 = ()
13:11-13:46: @1.Call: _3 = &lt;[generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}] as Generator&gt;::resume(move _4, move _6) -&gt; [return: bb2, unwind: bb26]
13:11-13:46: @2[2]: FakeRead(ForMatchedPlace, _3)
14:9-14:35: @2[3]: _7 = discriminant(_3)"> GeneratorState::Yielded(1)<span class="annotation">⦉@0,1,2</span></span></span><span class="code" style="--layer: 0"> =&gt; </span><span><span class="code odd" style="--layer: 1" title="14:39-14:41: @6[0]: _2 = const ()"><span class="annotation">@4,6,7,8⦊</span>{}<span class="annotation">⦉@4,6,7,8</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="15:14-15:52: @5.Call: begin_panic::&lt;&amp;str&gt;(const &quot;unexpected value from resume&quot;) -&gt; bb26"><span class="annotation">@5⦊</span>panic!("unexpected value from resume")<span class="annotation">⦉@5</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> match </span><span><span class="code odd" style="--layer: 1" title="17:20-17:34: @6[7]: _12 = &amp;mut _1
17:11-17:35: @6.Call: _11 = Pin::&lt;&amp;mut [generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}]&gt;::new(move _12) -&gt; [return: bb7, unwind: bb26]
17:43-17:45: @7[2]: _13 = ()
17:11-17:46: @7.Call: _10 = &lt;[generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}] as Generator&gt;::resume(move _11, move _13) -&gt; [return: bb8, unwind: bb26]
17:11-17:46: @8[2]: FakeRead(ForMatchedPlace, _10)"><span class="annotation">@4,6,7,8⦊</span>Pin::new(&amp;mut generator).resume(())<span class="annotation">⦉@4,6,7,8</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> GeneratorState::Complete(</span><span><span class="code even" style="--layer: 1" title="18:34-18:39: @10.Call: _14 = &lt;str as PartialEq&gt;::eq(((_10 as Complete).0: &amp;str), const &quot;foo&quot;) -&gt; [return: bb11, unwind: bb26]"><span class="annotation">@10,11⦊</span>"foo"<span class="annotation">⦉@10,11</span></span></span><span class="code" style="--layer: 0">) =&gt; </span><span><span class="code odd" style="--layer: 1" title="18:44-18:46: @13[0]: _9 = const ()"><span class="annotation">@12,13,14,15⦊</span>{}<span class="annotation">⦉@12,13,14,15</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="19:14-19:52: @9.Call: begin_panic::&lt;&amp;str&gt;(const &quot;unexpected value from resume&quot;) -&gt; bb26"><span class="annotation">@9⦊</span>panic!("unexpected value from resume")<span class="annotation">⦉@9</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code odd" style="--layer: 1" title="22:9-22:22: @13[5]: FakeRead(ForLet, _17)"><span class="annotation">@12,13,14,15⦊</span>mut generator<span class="annotation">⦉@12,13,14,15</span></span></span><span class="code" style="--layer: 0"> = || {</span></span>
<span class="line"><span class="code" style="--layer: 0"> yield 1;</span></span>
<span class="line"><span class="code" style="--layer: 0"> yield 2;</span></span>
<span class="line"><span class="code" style="--layer: 0"> yield 3;</span></span>
<span class="line"><span class="code" style="--layer: 0"> return "foo"</span></span>
<span class="line"><span class="code" style="--layer: 0"> };</span></span>
<span class="line"><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> match </span><span><span class="code odd" style="--layer: 1" title="29:20-29:34: @13[10]: _21 = &amp;mut _17
29:11-29:35: @13.Call: _20 = Pin::&lt;&amp;mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]&gt;::new(move _21) -&gt; [return: bb14, unwind: bb26]
29:43-29:45: @14[2]: _22 = ()
29:11-29:46: @14.Call: _19 = &lt;[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as Generator&gt;::resume(move _20, move _22) -&gt; [return: bb15, unwind: bb26]
29:11-29:46: @15[2]: FakeRead(ForMatchedPlace, _19)
30:9-30:35: @15[3]: _23 = discriminant(_19)"><span class="annotation">@12,13,14,15⦊</span>Pin::new(&amp;mut generator).resume(()) {</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="29:20-29:34: @13[10]: _21 = &amp;mut _17
29:11-29:35: @13.Call: _20 = Pin::&lt;&amp;mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]&gt;::new(move _21) -&gt; [return: bb14, unwind: bb26]
29:43-29:45: @14[2]: _22 = ()
29:11-29:46: @14.Call: _19 = &lt;[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as Generator&gt;::resume(move _20, move _22) -&gt; [return: bb15, unwind: bb26]
29:11-29:46: @15[2]: FakeRead(ForMatchedPlace, _19)
30:9-30:35: @15[3]: _23 = discriminant(_19)"> GeneratorState::Yielded(1)<span class="annotation">⦉@12,13,14,15</span></span></span><span class="code" style="--layer: 0"> =&gt; </span><span><span class="code even" style="--layer: 1" title="30:39-30:41: @19[0]: _18 = const ()"><span class="annotation">@17,19,20,21⦊</span>{}<span class="annotation">⦉@17,19,20,21</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code odd" style="--layer: 1" title="31:14-31:52: @18.Call: begin_panic::&lt;&amp;str&gt;(const &quot;unexpected value from resume&quot;) -&gt; bb26"><span class="annotation">@18⦊</span>panic!("unexpected value from resume")<span class="annotation">⦉@18</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> match </span><span><span class="code even" style="--layer: 1" title="33:20-33:34: @19[6]: _27 = &amp;mut _17
33:11-33:35: @19.Call: _26 = Pin::&lt;&amp;mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]&gt;::new(move _27) -&gt; [return: bb20, unwind: bb26]
33:43-33:45: @20[2]: _28 = ()
33:11-33:46: @20.Call: _25 = &lt;[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as Generator&gt;::resume(move _26, move _28) -&gt; [return: bb21, unwind: bb26]
33:11-33:46: @21[2]: FakeRead(ForMatchedPlace, _25)
34:9-34:35: @21[3]: _29 = discriminant(_25)"><span class="annotation">@17,19,20,21⦊</span>Pin::new(&amp;mut generator).resume(()) {</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="33:20-33:34: @19[6]: _27 = &amp;mut _17
33:11-33:35: @19.Call: _26 = Pin::&lt;&amp;mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]&gt;::new(move _27) -&gt; [return: bb20, unwind: bb26]
33:43-33:45: @20[2]: _28 = ()
33:11-33:46: @20.Call: _25 = &lt;[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as Generator&gt;::resume(move _26, move _28) -&gt; [return: bb21, unwind: bb26]
33:11-33:46: @21[2]: FakeRead(ForMatchedPlace, _25)
34:9-34:35: @21[3]: _29 = discriminant(_25)"> GeneratorState::Yielded(2)<span class="annotation">⦉@17,19,20,21</span></span></span><span class="code" style="--layer: 0"> =&gt; </span><span><span class="code odd" style="--layer: 1" title="34:39-34:41: @25[0]: _0 = const ()"><span class="annotation">@23,25⦊</span>{}<span class="annotation">⦉@23,25</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="35:14-35:52: @24.Call: begin_panic::&lt;&amp;str&gt;(const &quot;unexpected value from resume&quot;) -&gt; bb26"><span class="annotation">@24⦊</span>panic!("unexpected value from resume")<span class="annotation">⦉@24</span></span></span><span class="code" style="--layer: 0">,</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="37:2-37:2: @25.Return: return"><span class="annotation">@23,25⦊</span><span class="annotation">⦉@23,25</span></span></span></span></div>
</body>
</html>

View file

@ -0,0 +1,99 @@
<!DOCTYPE html>
<!--
Preview this file as rendered HTML from the github source at:
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html
For revisions in Pull Requests (PR):
* Replace "rust-lang" with the github PR author
* Replace "master" with the PR branch name
-->
<html>
<head>
<title>abort.main - Coverage Spans</title>
<style>
.line {
counter-increment: line;
}
.line:before {
content: counter(line) ": ";
font-family: Menlo, Monaco, monospace;
font-style: italic;
width: 3.8em;
display: inline-block;
text-align: right;
filter: opacity(50%);
-webkit-user-select: none;
}
.code {
color: #dddddd;
background-color: #222222;
font-family: Menlo, Monaco, monospace;
line-height: 1.4em;
border-bottom: 2px solid #222222;
white-space: pre;
display: inline-block;
}
.odd {
background-color: #55bbff;
color: #223311;
}
.even {
background-color: #ee7756;
color: #551133;
}
.code {
--index: calc(var(--layer) - 1);
padding-top: calc(var(--index) * 0.15em);
filter:
hue-rotate(calc(var(--index) * 25deg))
saturate(calc(100% - (var(--index) * 2%)))
brightness(calc(100% - (var(--index) * 1.5%)));
}
.annotation {
color: #4444ff;
font-family: monospace;
font-style: italic;
display: none;
-webkit-user-select: none;
}
body:active .annotation {
/* requires holding mouse down anywhere on the page */
display: inline-block;
}
span:hover .annotation {
/* requires hover over a span ONLY on its first line */
display: inline-block;
}
</style>
</head>
<body>
<div class="code" style="counter-reset: line 13"><span class="line"><span class="code" style="--layer: 0">fn main() -&gt; Result&lt;(),u8&gt; {</span></span>
<span class="line"><span class="code" style="--layer: 0"> let </span><span><span class="code even" style="--layer: 1" title="15:25-15:27: @0[1]: _1 = const 10_i32
15:9-15:22: @0[2]: FakeRead(ForLet, _1)"><span class="annotation">@0⦊</span>mut countdown = 10<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> while </span><span><span class="code odd" style="--layer: 1" title="16:11-16:20: @2[2]: _5 = _1
16:11-16:24: @2[3]: _4 = Gt(move _5, const 0_i32)
16:11-16:24: @2[5]: FakeRead(ForMatchedPlace, _4)"><span class="annotation">@1,2⦊</span>countdown &gt; 0<span class="annotation">⦉@1,2</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="17:12-17:21: @5[3]: _8 = _1
17:12-17:25: @5[4]: _7 = Lt(move _8, const 5_i32)
17:12-17:25: @5[6]: FakeRead(ForMatchedPlace, _7)"><span class="annotation">@3,5⦊</span>countdown &lt; 5<span class="annotation">⦉@3,5</span></span></span><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="18:13-18:31: @8.Call: _9 = might_abort(const false) -&gt; [return: bb9, unwind: bb12]
17:26-19:10: @9[1]: _6 = const ()
19:10-19:10: @9.Goto: goto -&gt; bb10"><span class="annotation">@6,8,9⦊</span>{</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="18:13-18:31: @8.Call: _9 = might_abort(const false) -&gt; [return: bb9, unwind: bb12]
17:26-19:10: @9[1]: _6 = const ()
19:10-19:10: @9.Goto: goto -&gt; bb10"> might_abort(false);</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="18:13-18:31: @8.Call: _9 = might_abort(const false) -&gt; [return: bb9, unwind: bb12]
17:26-19:10: @9[1]: _6 = const ()
19:10-19:10: @9.Goto: goto -&gt; bb10"> }<span class="annotation">⦉@6,8,9</span></span></span><span><span class="code even" style="--layer: 1" title="19:10-19:10: @7.Goto: goto -&gt; bb10"><span class="annotation">@7⦊</span><span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="20:9-20:23: @10[2]: _10 = CheckedSub(_1, const 1_i32)
20:9-20:23: @11[0]: _1 = move (_10.0: i32)"><span class="annotation">@10,11⦊</span>countdown -= 1<span class="annotation">⦉@10,11</span></span></span><span class="code" style="--layer: 0">;</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="22:8-22:10: @4[4]: _12 = ()
22:5-22:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _12)
23:2-23:2: @4.Return: return"><span class="annotation">@4⦊</span>Ok(())</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="22:8-22:10: @4[4]: _12 = ()
22:5-22:11: @4[5]: _0 = std::result::Result::&lt;(), u8&gt;::Ok(move _12)
23:2-23:2: @4.Return: return">}<span class="annotation">⦉@4</span></span></span></span></div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more