blob: 53e0e601907ed914c45177a27d6ebc00af1775eb [file] [log] [blame]
// @dart = 2.6
class A1<X extends Function<T>()> {
A1(Function<X extends Function<T>()>() f);
bar1(Function<X extends Function<T>()>() f) {}
Function<X extends Function<T>()>() bar2() => throw 42;
Function<X extends Function<T>()>() get baz1 => throw 42;
void set qux1(Function<X extends Function<T>()>() value) {}
Function<X extends Function<T>()>() quux1 = throw 42;
static Function<X extends Function<T>()>() quux2 = throw 42;
}
class A2<X extends void Function<Y extends Function<T>()>()> {}
class A3<
X extends Function(void Function<Y extends Function(Function<T>())>())> {}
foo1(Function<X extends Function<T>()>() f) {}
foo2(Function<X extends Function(Function<T>())>() f) {}
Function<X extends Function<T>()>() foo3() => throw 42;
Function<X extends Function(Function<T>())>() foo4() => throw 42;
Function<X extends Function<T>()>() get corge1 => throw 42;
void set grault1(Function<X extends Function<T>()>() value) {}
Function<X extends Function<T>()>() quuz1 = throw 42;
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();
class B1 {}
extension E1<X extends Function<T>()> on B1 {
bar3(Function<X extends Function<T>()>() f) {}
Function<X extends Function<T>()>() bar4() => throw 42;
Function<X extends Function<T>()>() get baz2 => throw 42;
void set qux2(Function<X extends Function<T>()>() value) {}
static Function<X extends Function<T>()>() quux3 = throw 42;
}
main() {}