| // 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() { } |