blob: 537afb1268ff3db7db12a63dfefa0085e10e780a [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Never never() => throw "Never";
class A<X extends Object, Y extends Object?> {
X foo() => never();
X? bar() => null;
Y baz() => never();
}
class B<X extends List<Y>, Y extends Object?> {
foo(X x, Y y) {}
}
class C<X extends List<Y>?, Y extends List<X>?> {
foo(X x, Y y) {}
}
class D<X extends Y, Y extends Z, Z> {
foo(X x, Y y, Z z) {}
}
main() {
X fun1<X extends Object, Y extends Object?>() => never();
Y fun2<X extends Object, Y extends Object?>() => never();
X fun3<X extends List<Y>, Y extends Object?>() => never();
Y fun4<X extends List<Y>, Y extends Object?>() => never();
X fun5<X extends List<Y>?, Y extends List<X>?>() => never();
Y fun6<X extends List<Y>?, Y extends List<X>?>() => never();
X fun7<X extends Y, Y extends Z, Z>() => never();
Y fun8<X extends Y, Y extends Z, Z>() => never();
Z fun9<X extends Y, Y extends Z, Z>() => never();
}