2024-02-16 14:02:50 -06:00
|
|
|
//@ build-pass
|
2023-01-31 10:45:30 -06:00
|
|
|
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() {}
|