fn escaping_borrow_of_closure_params_1() {
let g = |x: usize, y:usize| {
+ //~^ NOTE reference must be valid for the scope of call-site for function
+ //~| NOTE ...but borrowed value is only valid for the scope of function body
+ //~| NOTE reference must be valid for the scope of call-site for function
+ //~| NOTE ...but borrowed value is only valid for the scope of function body
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR `x` does not live long enough
//~| ERROR `y` does not live long enough
fn escaping_borrow_of_closure_params_2() {
let g = |x: usize, y:usize| {
+ //~^ NOTE reference must be valid for the scope of call-site for function
+ //~| NOTE ...but borrowed value is only valid for the scope of function body
+ //~| NOTE reference must be valid for the scope of call-site for function
+ //~| NOTE ...but borrowed value is only valid for the scope of function body
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR `x` does not live long enough
//~| ERROR `y` does not live long enough
fn g<'a>(x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
return Box::new(f);
};
fn g<'a>(x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
Box::new(f)
};
fn g<'a>(&self, x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
return Box::new(f);
}
}
fn g<'a>(&self, x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
Box::new(f)
}
}
fn g<'a>(&self, x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
return Box::new(f);
}
}
fn g<'a>(&self, x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
Box::new(f)
}
}
fn g<'a>(&self, x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
return Box::new(f);
}
}
fn g<'a>(&self, x: usize, y:usize) -> Box<Fn(bool) -> usize + 'a> {
let f = |t: bool| if t { x } else { y }; // (separate errors for `x` vs `y`)
//~^ ERROR E0373
+ //~| NOTE `x` is borrowed here
+ //~| NOTE may outlive borrowed value `x`
//~| ERROR E0373
+ //~| NOTE `y` is borrowed here
+ //~| NOTE may outlive borrowed value `y`
Box::new(f)
}
}