| // MIR for `main` after SimplifyCfg-initial | 
 |  | 
 | | User Type Annotations | 
 | | 0: user_ty: Canonical { value: Ty(std::option::Option<std::boxed::Box<u32>>), max_universe: U0, variables: [] }, span: $DIR/basic_assignment.rs:38:17: 38:33, inferred_ty: std::option::Option<std::boxed::Box<u32>> | 
 | | 1: user_ty: Canonical { value: Ty(std::option::Option<std::boxed::Box<u32>>), max_universe: U0, variables: [] }, span: $DIR/basic_assignment.rs:38:17: 38:33, inferred_ty: std::option::Option<std::boxed::Box<u32>> | 
 | | | 
 | fn main() -> () { | 
 |     let mut _0: (); | 
 |     let _1: bool; | 
 |     let mut _3: bool; | 
 |     let mut _6: std::option::Option<std::boxed::Box<u32>>; | 
 |     scope 1 { | 
 |         debug nodrop_x => _1; | 
 |         let _2: bool; | 
 |         scope 2 { | 
 |             debug nodrop_y => _2; | 
 |             let _4: std::option::Option<std::boxed::Box<u32>> as UserTypeProjection { base: UserType(0), projs: [] }; | 
 |             scope 3 { | 
 |                 debug drop_x => _4; | 
 |                 let _5: std::option::Option<std::boxed::Box<u32>>; | 
 |                 scope 4 { | 
 |                     debug drop_y => _5; | 
 |                 } | 
 |             } | 
 |         } | 
 |     } | 
 |  | 
 |     bb0: { | 
 |         StorageLive(_1); | 
 |         _1 = const false; | 
 |         FakeRead(ForLet(None), _1); | 
 |         StorageLive(_2); | 
 |         StorageLive(_3); | 
 |         _3 = copy _1; | 
 |         _2 = move _3; | 
 |         StorageDead(_3); | 
 |         StorageLive(_4); | 
 |         _4 = Option::<Box<u32>>::None; | 
 |         FakeRead(ForLet(None), _4); | 
 |         AscribeUserType(_4, o, UserTypeProjection { base: UserType(1), projs: [] }); | 
 |         StorageLive(_5); | 
 |         StorageLive(_6); | 
 |         _6 = move _4; | 
 |         drop(_5) -> [return: bb1, unwind: bb2]; | 
 |     } | 
 |  | 
 |     bb1: { | 
 |         _5 = move _6; | 
 |         drop(_6) -> [return: bb3, unwind: bb6]; | 
 |     } | 
 |  | 
 |     bb2 (cleanup): { | 
 |         _5 = move _6; | 
 |         drop(_6) -> [return: bb6, unwind terminate(cleanup)]; | 
 |     } | 
 |  | 
 |     bb3: { | 
 |         StorageDead(_6); | 
 |         _0 = const (); | 
 |         drop(_5) -> [return: bb4, unwind: bb7]; | 
 |     } | 
 |  | 
 |     bb4: { | 
 |         StorageDead(_5); | 
 |         drop(_4) -> [return: bb5, unwind: bb8]; | 
 |     } | 
 |  | 
 |     bb5: { | 
 |         StorageDead(_4); | 
 |         StorageDead(_2); | 
 |         StorageDead(_1); | 
 |         return; | 
 |     } | 
 |  | 
 |     bb6 (cleanup): { | 
 |         drop(_5) -> [return: bb7, unwind terminate(cleanup)]; | 
 |     } | 
 |  | 
 |     bb7 (cleanup): { | 
 |         drop(_4) -> [return: bb8, unwind terminate(cleanup)]; | 
 |     } | 
 |  | 
 |     bb8 (cleanup): { | 
 |         resume; | 
 |     } | 
 | } |