// run-pass // Previously the closure's argument would be inferred to // >::Item, causing an error in MIR type // checking trait ITrait<'a> {type Item;} struct S {} impl<'a> ITrait<'a> for S { type Item = &'a mut usize; } fn m(_: F) where I: for<'a> ITrait<'a>, F: for<'a> FnMut(>::Item) { } fn main() { m::(|x| { *x += 1; }); }