// Test that we enforce user-provided type annotations on closures. fn foo<'a>() { // Here `x` is free in the closure sig: |x: &'a i32| -> &'static i32 { return x; //~ ERROR lifetime may not live long enough }; } fn foo1() { // Here `x` is bound in the closure sig: |x: &i32| -> &'static i32 { return x; //~ ERROR lifetime may not live long enough }; } fn bar<'a>() { // Here `x` is free in the closure sig: |x: &'a i32, b: fn(&'static i32)| { b(x); //~ ERROR lifetime may not live long enough }; } fn bar1() { // Here `x` is bound in the closure sig: |x: &i32, b: fn(&'static i32)| { b(x); //~ ERROR borrowed data escapes outside of closure }; } fn main() {}