// Notes on the MIR output below:
//
-// 1. The `EndRegion('10s)` is allowed to precede the `drop(_3)`
+// 1. The `EndRegion('13s)` is allowed to precede the `drop(_3)`
// solely because of the #[may_dangle] mentioned above.
//
-// 2. Regarding the occurrence of `EndRegion('12ds)` *after* `StorageDead(_6)`
-// (where we have borrows `&'12ds _6`): Eventually:
+// 2. Regarding the occurrence of `EndRegion('15ds)` *after* `StorageDead(_6)`
+// (where we have borrows `&'15ds _6`): Eventually:
//
// i. this code should be rejected (by mir-borrowck), or
//
// ii. the MIR code generation should be changed so that the
-// EndRegion('12ds)` precedes `StorageDead(_6)` in the
+// EndRegion('15ds)` precedes `StorageDead(_6)` in the
// control-flow. (Note: arielb1 views drop+storagedead as one
// unit, and does not see this option as a useful avenue to
// explore.), or
// START rustc.main.QualifyAndPromoteConstants.before.mir
// fn main() -> () {
// let mut _0: ();
-// let mut _1: &'12ds S1;
-// let mut _2: D1<'12ds, '10s>;
-// let mut _3: &'12ds S1;
-// let mut _4: &'12ds S1;
-// let mut _5: S1;
-// let mut _6: &'10s S1;
-// let mut _7: &'10s S1;
-// let mut _8: S1;
+// let mut _1: &'15ds S1;
+// let mut _2: D1<'15ds, '13s>;
+// let mut _3: &'15ds S1;
+// let mut _4: &'15ds S1;
+// let _5: S1;
+// let mut _6: &'13s S1;
+// let mut _7: &'13s S1;
+// let _8: S1;
// bb0: {
// StorageLive(_2);
// StorageLive(_3);
// StorageLive(_4);
// StorageLive(_5);
// _5 = S1::{{constructor}}(const "ex1",);
-// _4 = &'12ds _5;
-// _3 = &'12ds (*_4);
+// _4 = &'15ds _5;
+// _3 = &'15ds (*_4);
// StorageLive(_6);
// StorageLive(_7);
// StorageLive(_8);
// _8 = S1::{{constructor}}(const "dang1",);
-// _7 = &'10s _8;
-// _6 = &'10s (*_7);
-// _2 = D1<'12ds, '10s>::{{constructor}}(move _3, move _6);
-// EndRegion('10s);
+// _7 = &'13s _8;
+// _6 = &'13s (*_7);
+// _2 = D1<'15ds, '13s>::{{constructor}}(move _3, move _6);
+// EndRegion('13s);
// StorageDead(_6);
// StorageDead(_3);
-// _1 = (_2.0: &'12ds S1);
+// _1 = (_2.0: &'15ds S1);
// drop(_2) -> [return: bb2, unwind: bb1];
// }
// bb1: {
// StorageDead(_8);
// StorageDead(_4);
// StorageDead(_5);
-// EndRegion('12ds);
+// EndRegion('15ds);
// _0 = ();
// return;
// }
// START rustc.main.QualifyAndPromoteConstants.after.mir
// fn main() -> (){
// let mut _0: ();
-// let mut _1: &'12ds S1;
-// let mut _2: D1<'12ds, '10s>;
-// let mut _3: &'12ds S1;
-// let mut _4: &'12ds S1;
-// let mut _5: S1;
-// let mut _6: &'10s S1;
-// let mut _7: &'10s S1;
-// let mut _8: S1;
-// let mut _9: &'10s S1;
-// let mut _10: &'12ds S1;
+// let mut _1: &'15ds S1;
+// let mut _2: D1<'15ds, '13s>;
+// let mut _3: &'15ds S1;
+// let mut _4: &'15ds S1;
+// let _5: S1;
+// let mut _6: &'13s S1;
+// let mut _7: &'13s S1;
+// let _8: S1;
// bb0: {
// StorageLive(_2);
// StorageLive(_3);
// StorageLive(_4);
-// _10 = promoted[1];
-// _4 = &'12ds (*_10);
-// _3 = &'12ds (*_4);
+// _4 = &'15ds (promoted[1]: S1);
+// _3 = &'15ds (*_4);
// StorageLive(_6);
// StorageLive(_7);
-// _9 = promoted[0];
-// _7 = &'10s (*_9);
-// _6 = &'10s (*_7);
-// _2 = D1<'12ds, '10s>::{{constructor}}(move _3, move _6);
-// EndRegion('10s);
+// _7 = &'13s (promoted[0]: S1);
+// _6 = &'13s (*_7);
+// _2 = D1<'15ds, '13s>::{{constructor}}(move _3, move _6);
+// EndRegion('13s);
// StorageDead(_6);
// StorageDead(_3);
-// _1 = (_2.0: &'12ds S1);
+// _1 = (_2.0: &'15ds S1);
// drop(_2) -> [return: bb2, unwind: bb1];
// }
// bb1: {
// StorageDead(_2);
// StorageDead(_7);
// StorageDead(_4);
-// EndRegion('12ds);
+// EndRegion('15ds);
// _0 = ();
// return;
// }