1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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/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><span class="code even" style="--layer: 1"><span class="annotation">@0,1,2⦊</span>fn main() <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"> 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 = &mut _1
13:11-13:35: @0.Call: _4 = std::pin::Pin::<&mut [generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}]>::new(move _5) -> [return: bb1, unwind: bb26]
13:43-13:45: @1[2]: _6 = ()
13:11-13:46: @1.Call: _3 = <[generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}] as std::ops::Generator>::resume(move _4, move _6) -> [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(&mut generator).resume(()) {</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="13:20-13:34: @0[7]: _5 = &mut _1
13:11-13:35: @0.Call: _4 = std::pin::Pin::<&mut [generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}]>::new(move _5) -> [return: bb1, unwind: bb26]
13:43-13:45: @1[2]: _6 = ()
13:11-13:46: @1.Call: _3 = <[generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}] as std::ops::Generator>::resume(move _4, move _6) -> [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"> => </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"> _ => </span><span><span class="code even" style="--layer: 1" title="15:14-15:52: @5.Call: std::rt::begin_panic::<&str>(const "unexpected value from resume") -> 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 = &mut _1
17:11-17:35: @6.Call: _11 = std::pin::Pin::<&mut [generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}]>::new(move _12) -> [return: bb7, unwind: bb26]
17:43-17:45: @7[2]: _13 = ()
17:11-17:46: @7.Call: _10 = <[generator@../coverage/yield.rs:8:25: 11:6 {i32, ()}] as std::ops::Generator>::resume(move _11, move _13) -> [return: bb8, unwind: bb26]
17:11-17:46: @8[2]: FakeRead(ForMatchedPlace, _10)"><span class="annotation">@4,6,7,8⦊</span>Pin::new(&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 = <str as std::cmp::PartialEq>::eq(((_10 as Complete).0: &str), const "foo") -> [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">) => </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"> _ => </span><span><span class="code even" style="--layer: 1" title="19:14-19:52: @9.Call: std::rt::begin_panic::<&str>(const "unexpected value from resume") -> 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 = &mut _17
29:11-29:35: @13.Call: _20 = std::pin::Pin::<&mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]>::new(move _21) -> [return: bb14, unwind: bb26]
29:43-29:45: @14[2]: _22 = ()
29:11-29:46: @14.Call: _19 = <[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as std::ops::Generator>::resume(move _20, move _22) -> [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(&mut generator).resume(()) {</span></span>
<span class="line"><span class="code odd" style="--layer: 1" title="29:20-29:34: @13[10]: _21 = &mut _17
29:11-29:35: @13.Call: _20 = std::pin::Pin::<&mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]>::new(move _21) -> [return: bb14, unwind: bb26]
29:43-29:45: @14[2]: _22 = ()
29:11-29:46: @14.Call: _19 = <[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as std::ops::Generator>::resume(move _20, move _22) -> [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"> => </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"> _ => </span><span><span class="code odd" style="--layer: 1" title="31:14-31:52: @18.Call: std::rt::begin_panic::<&str>(const "unexpected value from resume") -> 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 = &mut _17
33:11-33:35: @19.Call: _26 = std::pin::Pin::<&mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]>::new(move _27) -> [return: bb20, unwind: bb26]
33:43-33:45: @20[2]: _28 = ()
33:11-33:46: @20.Call: _25 = <[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as std::ops::Generator>::resume(move _26, move _28) -> [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(&mut generator).resume(()) {</span></span>
<span class="line"><span class="code even" style="--layer: 1" title="33:20-33:34: @19[6]: _27 = &mut _17
33:11-33:35: @19.Call: _26 = std::pin::Pin::<&mut [generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}]>::new(move _27) -> [return: bb20, unwind: bb26]
33:43-33:45: @20[2]: _28 = ()
33:11-33:46: @20.Call: _25 = <[generator@../coverage/yield.rs:22:25: 27:6 {i32, ()}] as std::ops::Generator>::resume(move _26, move _28) -> [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"> => </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"> _ => </span><span><span class="code even" style="--layer: 1" title="35:14-35:52: @24.Call: std::rt::begin_panic::<&str>(const "unexpected value from resume") -> 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>
|