//@ check-pass //@ compile-flags: -Zvalidate-mir // This test checks that bivariant parameters are handled correctly // in the mir. #![allow(coherence_leak_check)] trait Trait { type Assoc; } struct Foo(T) where T: Trait; impl Trait for for<'a> fn(&'a ()) { type Assoc = u32; } impl Trait for fn(&'static ()) { type Assoc = String; } fn foo(x: Foo fn(&'a ()), u32>) -> Foo { x } fn main() {}