// Make sure that we're handling bound lifetimes correctly when validating trait // bounds. // run-pass trait X<'a> { type F: FnOnce(&i32) -> &'a i32; } fn f X<'r> + ?Sized>() { None::.map(|f| f(&0)); } fn main() { f:: X<'x, F = fn(&i32) -> &'x i32>>(); }