| //@ build-pass | |
| struct Inv<'a>(&'a mut &'a ()); | |
| enum Foo<T> { | |
| Bar, | |
| Var(T), | |
| } | |
| type Supertype = Foo<for<'a> fn(Inv<'a>, Inv<'a>)>; | |
| fn foo(x: Foo<for<'a, 'b> fn(Inv<'a>, Inv<'b>)>) { | |
| match x { | |
| Supertype::Bar => {} | |
| Supertype::Var(x) => {} | |
| } | |
| } | |
| fn foo_nested(x: Foo<Foo<for<'a, 'b> fn(Inv<'a>, Inv<'b>)>>) { | |
| match x { | |
| Foo::Bar => {} | |
| Foo::Var(Supertype::Bar) => {} | |
| Foo::Var(Supertype::Var(x)) => {} | |
| } | |
| } | |
| fn main() {} |