1 // MIR for `test` before ElaborateDrops
3 fn test() -> Option<Box<u32>> {
4 let mut _0: std::option::Option<std::boxed::Box<u32>>; // return place in scope 0 at $DIR/issue-62289.rs:8:14: 8:30
5 let mut _1: std::boxed::Box<u32>; // in scope 0 at $DIR/issue-62289.rs:9:10: 9:21
6 let mut _2: std::boxed::Box<u32>; // in scope 0 at $DIR/issue-62289.rs:9:10: 9:21
7 let mut _3: std::ops::ControlFlow<std::option::Option<std::convert::Infallible>, u32>; // in scope 0 at $DIR/issue-62289.rs:9:15: 9:20
8 let mut _4: std::option::Option<u32>; // in scope 0 at $DIR/issue-62289.rs:9:15: 9:19
9 let mut _5: isize; // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
10 let _6: std::option::Option<std::convert::Infallible>; // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
11 let mut _7: !; // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
12 let mut _8: std::option::Option<std::convert::Infallible>; // in scope 0 at $DIR/issue-62289.rs:9:19: 9:20
13 let _9: u32; // in scope 0 at $DIR/issue-62289.rs:9:15: 9:20
15 debug residual => _6; // in scope 1 at $DIR/issue-62289.rs:9:19: 9:20
20 debug val => _9; // in scope 3 at $DIR/issue-62289.rs:9:15: 9:20
26 StorageLive(_1); // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
27 StorageLive(_2); // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
28 _2 = Box(u32); // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
29 StorageLive(_3); // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
30 StorageLive(_4); // scope 0 at $DIR/issue-62289.rs:9:15: 9:19
31 _4 = Option::<u32>::None; // scope 0 at $DIR/issue-62289.rs:9:15: 9:19
32 _3 = <Option<u32> as Try>::branch(move _4) -> [return: bb1, unwind: bb11]; // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
34 // + span: $DIR/issue-62289.rs:9:15: 9:20
35 // + literal: Const { ty: fn(std::option::Option<u32>) -> std::ops::ControlFlow<<std::option::Option<u32> as std::ops::Try>::Residual, <std::option::Option<u32> as std::ops::Try>::Output> {<std::option::Option<u32> as std::ops::Try>::branch}, val: Value(Scalar(<ZST>)) }
39 StorageDead(_4); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
40 _5 = discriminant(_3); // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
41 switchInt(move _5) -> [0_isize: bb2, 1_isize: bb4, otherwise: bb3]; // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
45 StorageLive(_9); // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
46 _9 = ((_3 as Continue).0: u32); // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
47 (*_2) = _9; // scope 4 at $DIR/issue-62289.rs:9:15: 9:20
48 StorageDead(_9); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
49 _1 = move _2; // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
50 drop(_2) -> [return: bb6, unwind: bb10]; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
54 unreachable; // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
58 StorageLive(_6); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
59 _6 = ((_3 as Break).0: std::option::Option<std::convert::Infallible>); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
60 StorageLive(_8); // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
61 _8 = _6; // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
62 _0 = <Option<Box<u32>> as FromResidual<Option<Infallible>>>::from_residual(move _8) -> [return: bb5, unwind: bb11]; // scope 2 at $DIR/issue-62289.rs:9:15: 9:20
64 // + span: $DIR/issue-62289.rs:9:19: 9:20
65 // + literal: Const { ty: fn(std::option::Option<std::convert::Infallible>) -> std::option::Option<std::boxed::Box<u32>> {<std::option::Option<std::boxed::Box<u32>> as std::ops::FromResidual<std::option::Option<std::convert::Infallible>>>::from_residual}, val: Value(Scalar(<ZST>)) }
69 StorageDead(_8); // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
70 StorageDead(_6); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
71 drop(_2) -> bb8; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
75 StorageDead(_2); // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
76 _0 = Option::<Box<u32>>::Some(move _1); // scope 0 at $DIR/issue-62289.rs:9:5: 9:22
77 drop(_1) -> bb7; // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
81 StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
82 StorageDead(_3); // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
83 goto -> bb9; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
87 StorageDead(_2); // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
88 StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
89 StorageDead(_3); // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
90 goto -> bb9; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
94 return; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
98 drop(_1) -> bb12; // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
102 drop(_2) -> bb12; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
106 resume; // scope 0 at $DIR/issue-62289.rs:8:1: 10:2