]> git.lizzy.rs Git - rust.git/blob - src/test/mir-opt/inline-closure-captures.rs
Remove ord lang item
[rust.git] / src / test / mir-opt / inline-closure-captures.rs
1 // compile-flags: -Z span_free_formats
2
3 // Tests that MIR inliner can handle closure captures.
4
5 fn main() {
6     println!("{:?}", foo(0, 14));
7 }
8
9 fn foo<T: Copy>(t: T, q: i32) -> (i32, T) {
10     let x = |_q| (q, t);
11     x(q)
12 }
13
14 // END RUST SOURCE
15 // START rustc.foo.Inline.after.mir
16 // fn foo(_1: T, _2: i32) -> (i32, T){
17 //     debug t => _1;
18 //     debug q => _2;
19 //     let mut _0: (i32, T);
20 //     let _3: [closure@HirId { owner: DefIndex(4), local_id: 15 } q:&i32, t:&T];
21 //     let mut _4: &i32;
22 //     let mut _5: &T;
23 //     let mut _6: &[closure@HirId { owner: DefIndex(4), local_id: 15 } q:&i32, t:&T];
24 //     let mut _7: (i32,);
25 //     let mut _8: i32;
26 //     let mut _11: i32;
27 //     scope 1 {
28 //         debug x => _3;
29 //         scope 2 {
30 //             debug _q => _11;
31 //             debug q => (*((*_6).0: &i32));
32 //             debug t => (*((*_6).1: &T));
33 //             let mut _9: i32;
34 //             let mut _10: T;
35 //         }
36 //     }
37 //     bb0: {
38 //         ...
39 //         _4 = &_2;
40 //         ...
41 //         _5 = &_1;
42 //         _3 = [closure@HirId { owner: DefIndex(4), local_id: 15 }] { q: move _4, t: move _5 };
43 //         ...
44 //         _6 = &_3;
45 //         ...
46 //         ...
47 //         _8 = _2;
48 //         _7 = (move _8,);
49 //         _11 = move (_7.0: i32);
50 //         ...
51 //         _9 = (*((*_6).0: &i32));
52 //         ...
53 //         _10 = (*((*_6).1: &T));
54 //         (_0.0: i32) = move _9;
55 //         (_0.1: T) = move _10;
56 //         ...
57 //         return;
58 //     }
59 // }
60 // END rustc.foo.Inline.after.mir