mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-19 10:24:16 +00:00

Account for `for` lifetimes when constructing closure to see if dereferencing the return value would be valid. Fix #125634, fix #124563.
18 lines
410 B
Rust
18 lines
410 B
Rust
// Test a method call where the parameter `B` would (illegally) be
|
|
// inferred to a region bound in the method argument. If this program
|
|
// were accepted, then the closure passed to `s.f` could escape its
|
|
// argument.
|
|
//@ run-rustfix
|
|
|
|
struct S;
|
|
|
|
impl S {
|
|
fn f<B, F>(&self, _: F) where F: FnOnce(&i32) -> B {
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let s = S;
|
|
s.f(|p| *p) //~ ERROR lifetime may not live long enough
|
|
}
|