// run-pass
// Test that we can parse all the various places that a `for` keyword
// can appear representing universal quantification.

// pretty-expanded FIXME #23616

#![allow(unused_variables)]
#![allow(dead_code)]

trait Get<A,R> {
    fn get(&self, arg: A) -> R;
}

// Parse HRTB with explicit `for` in a where-clause:

fn foo00<T>(t: T)
    where T : for<'a> Get<&'a i32, &'a i32>
{
}

fn foo01<T: for<'a> Get<&'a i32, &'a i32>>(t: T)
{
}

// Parse HRTB with explicit `for` in various sorts of types:

fn foo10(t: Box<dyn for<'a> Get<i32, i32>>) { }
fn foo11(t: Box<dyn for<'a> Fn(i32) -> i32>) { }

fn foo20(t: for<'a> fn(i32) -> i32) { }
fn foo21(t: for<'a> unsafe fn(i32) -> i32) { }
fn foo22(t: for<'a> extern "C" fn(i32) -> i32) { }
fn foo23(t: for<'a> unsafe extern "C" fn(i32) -> i32) { }

fn main() {
}
