]> git.lizzy.rs Git - rust.git/blob - src/test/codegen-units/item-collection/non-generic-closures.rs
Auto merge of #83152 - guswynn:jemallocator_part2, r=Mark-Simulacrum
[rust.git] / src / test / codegen-units / item-collection / non-generic-closures.rs
1 // In the current version of the collector that still has to support
2 // legacy-codegen, closures do not generate their own MonoItems, so we are
3 // ignoring this test until MIR codegen has taken over completely
4 // ignore-test
5
6 //
7 // compile-flags:-Zprint-mono-items=eager
8
9 #![deny(dead_code)]
10 #![feature(start)]
11
12 //~ MONO_ITEM fn non_generic_closures::temporary[0]
13 fn temporary() {
14     //~ MONO_ITEM fn non_generic_closures::temporary[0]::{{closure}}[0]
15     (|a: u32| {
16         let _ = a;
17     })(4);
18 }
19
20 //~ MONO_ITEM fn non_generic_closures::assigned_to_variable_but_not_executed[0]
21 fn assigned_to_variable_but_not_executed() {
22     //~ MONO_ITEM fn non_generic_closures::assigned_to_variable_but_not_executed[0]::{{closure}}[0]
23     let _x = |a: i16| {
24         let _ = a + 1;
25     };
26 }
27
28 //~ MONO_ITEM fn non_generic_closures::assigned_to_variable_executed_directly[0]
29 fn assigned_to_variable_executed_indirectly() {
30     //~ MONO_ITEM fn non_generic_closures::assigned_to_variable_executed_directly[0]::{{closure}}[0]
31     let f = |a: i32| {
32         let _ = a + 2;
33     };
34     run_closure(&f);
35 }
36
37 //~ MONO_ITEM fn non_generic_closures::assigned_to_variable_executed_indirectly[0]
38 fn assigned_to_variable_executed_directly() {
39     //~ MONO_ITEM fn non_generic_closures::assigned_to_variable_executed_indirectly[0]::{{closure}}[0]
40     let f = |a: i64| {
41         let _ = a + 3;
42     };
43     f(4);
44 }
45
46 //~ MONO_ITEM fn non_generic_closures::start[0]
47 #[start]
48 fn start(_: isize, _: *const *const u8) -> isize {
49     temporary();
50     assigned_to_variable_but_not_executed();
51     assigned_to_variable_executed_directly();
52     assigned_to_variable_executed_indirectly();
53
54     0
55 }
56
57 //~ MONO_ITEM fn non_generic_closures::run_closure[0]
58 fn run_closure(f: &Fn(i32)) {
59     f(3);
60 }