#![allow(dead_code, unused_variables)] // run-rustfix // Check projection of an associated type out of a higher-ranked trait-bound // in the context of a function signature. pub trait Foo { type A; fn get(&self, t: T) -> Self::A; } fn foo2 Foo<&'x isize>>( x: >::A) //~^ ERROR cannot extract an associated type from a higher-ranked trait bound in this context { // This case is illegal because we have to instantiate `'x`, and // we don't know what region to instantiate it with. // // This could perhaps be made equivalent to the examples below, // specifically for fn signatures. } fn foo3 Foo<&'x isize>>( x: >::A) { // OK, in this case we spelled out the precise regions involved, though we left one of // them anonymous. } fn foo4<'a, I : for<'x> Foo<&'x isize>>( x: >::A) { // OK, in this case we spelled out the precise regions involved. } pub fn main() {}