blob: 2562b2d1509c934975aba7d6613aef1d0e0c877b [file] [log] [blame]
// @dart = 2.6
Function<X extends Function(Function<T>())>() foo4() => throw 42;
Function<X extends Function<T>()>() foo3() => throw 42;
Function<X extends Function<T>()>() get corge1 => throw 42;
Function<X extends Function<T>()>() quuz1 = throw 42;
class A1<X extends Function<T>()> {
A1(Function<X extends Function<T>()>() f);
Function<X extends Function<T>()>() bar2() => throw 42;
Function<X extends Function<T>()>() get baz1 => throw 42;
Function<X extends Function<T>()>() quux1 = throw 42;
bar1(Function<X extends Function<T>()>() f) {}
static Function<X extends Function<T>()>() quux2 = throw 42;
void set qux1(Function<X extends Function<T>()>() value) {}
}
class A2<X extends void Function<Y extends Function<T>()>()> {}
class A3<
X extends Function(void Function<Y extends Function(Function<T>())>())> {}
class B1 {}
extension E1<X extends Function<T>()> on B1 {
Function<X extends Function<T>()>() bar4() => throw 42;
Function<X extends Function<T>()>() get baz2 => throw 42;
bar3(Function<X extends Function<T>()>() f) {}
static Function<X extends Function<T>()>() quux3 = throw 42;
void set qux2(Function<X extends Function<T>()>() value) {}
}
foo1(Function<X extends Function<T>()>() f) {}
foo2(Function<X extends Function(Function<T>())>() f) {}
main() {}
typedef F1 = void Function<X extends void Function<T>()>();
typedef F2 = void Function<X extends Function(void Function<T>())>();
typedef F3<X extends Function<T>()> = Function();
typedef F4<X extends Function<Y extends Function<T>()>()> = Function();
typedef F5<X extends Function(Function<Y extends Function(Function<T>())>())>
= Function();
void set grault1(Function<X extends Function<T>()>() value) {}