|  | // As in `escape-upvar-ref.rs`, test closure that: | 
|  | // | 
|  | // - captures a variable `y` | 
|  | // - stores reference to `y` into another, longer-lived spot | 
|  | // | 
|  | // except that the closure does so via a second closure. | 
|  |  | 
|  | //@ compile-flags:-Zverbose-internals | 
|  |  | 
|  | #![feature(rustc_attrs)] | 
|  |  | 
|  | #[rustc_regions] | 
|  | fn test() { | 
|  | let x = 44; | 
|  | let mut p = &x; | 
|  |  | 
|  | { | 
|  | let y = 22; | 
|  |  | 
|  | let mut closure = || { | 
|  | let mut closure1 = || p = &y; //~ ERROR `y` does not live long enough [E0597] | 
|  | closure1(); | 
|  | }; | 
|  |  | 
|  | closure(); | 
|  | } | 
|  |  | 
|  | deref(p); | 
|  | } | 
|  |  | 
|  | fn deref(_p: &i32) { } | 
|  |  | 
|  | fn main() { } |