Files
rust/src/test/ui/regions/regions-infer-not-param.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

36 lines
977 B
Rust
Raw Normal View History

// revisions: base nll
// ignore-compare-mode-nll
//[nll] compile-flags: -Z borrowck=mir
struct Direct<'a> {
f: &'a isize
}
struct Indirect1 {
// Here the lifetime parameter of direct is bound by the fn()
2019-05-28 14:46:13 -04:00
g: Box<dyn FnOnce(Direct) + 'static>
}
struct Indirect2<'a> {
// But here it is set to 'a
2019-05-28 14:46:13 -04:00
g: Box<dyn FnOnce(Direct<'a>) + 'static>
}
fn take_direct<'a,'b>(p: Direct<'a>) -> Direct<'b> { p }
//[base]~^ ERROR mismatched types
//[nll]~^^ ERROR lifetime may not live long enough
fn take_indirect1(p: Indirect1) -> Indirect1 { p }
fn take_indirect2<'a,'b>(p: Indirect2<'a>) -> Indirect2<'b> { p }
//[base]~^ ERROR mismatched types
//[base]~| expected struct `Indirect2<'b>`
//[base]~| found struct `Indirect2<'a>`
//[base]~| ERROR mismatched types
//[base]~| expected struct `Indirect2<'b>`
//[base]~| found struct `Indirect2<'a>`
//[nll]~^^^^^^^ ERROR lifetime may not live long enough
//[nll]~| ERROR lifetime may not live long enough
fn main() {}