summaryrefslogtreecommitdiffstats
path: root/tests/run-coverage/closure.coverage
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-coverage/closure.coverage')
-rw-r--r--tests/run-coverage/closure.coverage222
1 files changed, 222 insertions, 0 deletions
diff --git a/tests/run-coverage/closure.coverage b/tests/run-coverage/closure.coverage
new file mode 100644
index 000000000..45d36b72e
--- /dev/null
+++ b/tests/run-coverage/closure.coverage
@@ -0,0 +1,222 @@
+ 1| |#![allow(unused_assignments, unused_variables)]
+ 2| |// compile-flags: -C opt-level=2
+ 3| 1|fn main() { // ^^ fix described in rustc_middle/mir/mono.rs
+ 4| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure
+ 5| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from
+ 6| 1| // dependent conditions.
+ 7| 1| let is_true = std::env::args().len() == 1;
+ 8| 1| let is_false = ! is_true;
+ 9| 1|
+ 10| 1| let mut some_string = Some(String::from("the string content"));
+ 11| 1| println!(
+ 12| 1| "The string or alt: {}"
+ 13| 1| ,
+ 14| 1| some_string
+ 15| 1| .
+ 16| 1| unwrap_or_else
+ 17| 1| (
+ 18| 1| ||
+ 19| 0| {
+ 20| 0| let mut countdown = 0;
+ 21| 0| if is_false {
+ 22| 0| countdown = 10;
+ 23| 0| }
+ 24| 0| "alt string 1".to_owned()
+ 25| 1| }
+ 26| 1| )
+ 27| 1| );
+ 28| 1|
+ 29| 1| some_string = Some(String::from("the string content"));
+ 30| 1| let
+ 31| 1| a
+ 32| | =
+ 33| | ||
+ 34| 0| {
+ 35| 0| let mut countdown = 0;
+ 36| 0| if is_false {
+ 37| 0| countdown = 10;
+ 38| 0| }
+ 39| 0| "alt string 2".to_owned()
+ 40| 0| };
+ 41| 1| println!(
+ 42| 1| "The string or alt: {}"
+ 43| 1| ,
+ 44| 1| some_string
+ 45| 1| .
+ 46| 1| unwrap_or_else
+ 47| 1| (
+ 48| 1| a
+ 49| 1| )
+ 50| 1| );
+ 51| 1|
+ 52| 1| some_string = None;
+ 53| 1| println!(
+ 54| 1| "The string or alt: {}"
+ 55| 1| ,
+ 56| 1| some_string
+ 57| 1| .
+ 58| 1| unwrap_or_else
+ 59| 1| (
+ 60| 1| ||
+ 61| 1| {
+ 62| 1| let mut countdown = 0;
+ 63| 1| if is_false {
+ 64| 0| countdown = 10;
+ 65| 1| }
+ 66| 1| "alt string 3".to_owned()
+ 67| 1| }
+ 68| 1| )
+ 69| 1| );
+ 70| 1|
+ 71| 1| some_string = None;
+ 72| 1| let
+ 73| 1| a
+ 74| 1| =
+ 75| 1| ||
+ 76| 1| {
+ 77| 1| let mut countdown = 0;
+ 78| 1| if is_false {
+ 79| 0| countdown = 10;
+ 80| 1| }
+ 81| 1| "alt string 4".to_owned()
+ 82| 1| };
+ 83| 1| println!(
+ 84| 1| "The string or alt: {}"
+ 85| 1| ,
+ 86| 1| some_string
+ 87| 1| .
+ 88| 1| unwrap_or_else
+ 89| 1| (
+ 90| 1| a
+ 91| 1| )
+ 92| 1| );
+ 93| 1|
+ 94| 1| let
+ 95| 1| quote_closure
+ 96| 1| =
+ 97| 1| |val|
+ 98| 5| {
+ 99| 5| let mut countdown = 0;
+ 100| 5| if is_false {
+ 101| 0| countdown = 10;
+ 102| 5| }
+ 103| 5| format!("'{}'", val)
+ 104| 5| };
+ 105| 1| println!(
+ 106| 1| "Repeated, quoted string: {:?}"
+ 107| 1| ,
+ 108| 1| std::iter::repeat("repeat me")
+ 109| 1| .take(5)
+ 110| 1| .map
+ 111| 1| (
+ 112| 1| quote_closure
+ 113| 1| )
+ 114| 1| .collect::<Vec<_>>()
+ 115| 1| );
+ 116| 1|
+ 117| 1| let
+ 118| 1| _unused_closure
+ 119| | =
+ 120| | |
+ 121| | mut countdown
+ 122| | |
+ 123| 0| {
+ 124| 0| if is_false {
+ 125| 0| countdown = 10;
+ 126| 0| }
+ 127| 0| "closure should be unused".to_owned()
+ 128| 0| };
+ 129| |
+ 130| 1| let mut countdown = 10;
+ 131| 1| let _short_unused_closure = | _unused_arg: u8 | countdown += 1;
+ ^0
+ 132| |
+ 133| |
+ 134| 1| let short_used_covered_closure_macro = | used_arg: u8 | println!("called");
+ 135| 1| let short_used_not_covered_closure_macro = | used_arg: u8 | println!("not called");
+ ^0
+ 136| 1| let _short_unused_closure_macro = | _unused_arg: u8 | println!("not called");
+ ^0
+ 137| |
+ 138| |
+ 139| |
+ 140| |
+ 141| 1| let _short_unused_closure_block = | _unused_arg: u8 | { println!("not called") };
+ ^0
+ 142| |
+ 143| 1| let _shortish_unused_closure = | _unused_arg: u8 | {
+ 144| 0| println!("not called")
+ 145| 0| };
+ 146| |
+ 147| 1| let _as_short_unused_closure = |
+ 148| | _unused_arg: u8
+ 149| 0| | { println!("not called") };
+ 150| |
+ 151| 1| let _almost_as_short_unused_closure = |
+ 152| | _unused_arg: u8
+ 153| 0| | { println!("not called") }
+ 154| | ;
+ 155| |
+ 156| |
+ 157| |
+ 158| |
+ 159| |
+ 160| 1| let _short_unused_closure_line_break_no_block = | _unused_arg: u8 |
+ 161| 0|println!("not called")
+ 162| | ;
+ 163| |
+ 164| 1| let _short_unused_closure_line_break_no_block2 =
+ 165| | | _unused_arg: u8 |
+ 166| 0| println!(
+ 167| 0| "not called"
+ 168| 0| )
+ 169| | ;
+ 170| |
+ 171| 1| let short_used_not_covered_closure_line_break_no_block_embedded_branch =
+ 172| | | _unused_arg: u8 |
+ 173| 0| println!(
+ 174| 0| "not called: {}",
+ 175| 0| if is_true { "check" } else { "me" }
+ 176| 0| )
+ 177| | ;
+ 178| |
+ 179| 1| let short_used_not_covered_closure_line_break_block_embedded_branch =
+ 180| 1| | _unused_arg: u8 |
+ 181| 0| {
+ 182| 0| println!(
+ 183| 0| "not called: {}",
+ 184| 0| if is_true { "check" } else { "me" }
+ 185| | )
+ 186| 0| }
+ 187| | ;
+ 188| |
+ 189| 1| let short_used_covered_closure_line_break_no_block_embedded_branch =
+ 190| 1| | _unused_arg: u8 |
+ 191| 1| println!(
+ 192| 1| "not called: {}",
+ 193| 1| if is_true { "check" } else { "me" }
+ ^0
+ 194| 1| )
+ 195| | ;
+ 196| |
+ 197| 1| let short_used_covered_closure_line_break_block_embedded_branch =
+ 198| 1| | _unused_arg: u8 |
+ 199| 1| {
+ 200| 1| println!(
+ 201| 1| "not called: {}",
+ 202| 1| if is_true { "check" } else { "me" }
+ ^0
+ 203| | )
+ 204| 1| }
+ 205| | ;
+ 206| |
+ 207| 1| if is_false {
+ 208| 0| short_used_not_covered_closure_macro(0);
+ 209| 0| short_used_not_covered_closure_line_break_no_block_embedded_branch(0);
+ 210| 0| short_used_not_covered_closure_line_break_block_embedded_branch(0);
+ 211| 1| }
+ 212| 1| short_used_covered_closure_macro(0);
+ 213| 1| short_used_covered_closure_line_break_no_block_embedded_branch(0);
+ 214| 1| short_used_covered_closure_line_break_block_embedded_branch(0);
+ 215| 1|}
+