blob: 9f83da1ef608faa77c02dca5ecd15effc932a9c7 [file] [log] [blame]
// Copyright (c) 2023, 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.
typedef F1<X> = X;
extension type E1<X>(X it) {}
typedef F2<X> = E1<X>;
typedef F3<X> = E1<F1<X>>;
typedef F4<X> = F1<E1<X>>;
typedef F5<X> = F1<E1<F1<X>>>;
typedef F6<X> = F1<F1<X>>;
typedef F7<X> = E1<E1<X>>;
extension type E2<X>(F1<X> it) {}
extension type E3<X>(F1<E1<X>> it) {}
extension type E4<X>(E1<F1<X>> it) {}
extension type E5<X>(E1<F1<E1<X>>> it) {}
extension type E6<X>(E1<E1<X>> it) {}
extension type E7<X>(F1<F1<X>> it) {}
class A1<X extends Y, Y extends X> {} // Error.
class A2<X extends X> {} // Error.
class A3<X, Y extends Z, Z extends Y> {} // Error.
class AF11<X extends F1<X>> {} // Error.
class AF12<X extends F2<X>> {} // Error.
class AF13<X extends F3<X>> {} // Error.
class AF14<X extends F4<X>> {} // Error.
class AF15<X extends F5<X>> {} // Error.
class AF16<X extends F6<X>> {} // Error.
class AF17<X extends F7<X>> {} // Error.
class AE11<X extends E1<X>> {} // Error.
class AE12<X extends E2<X>> {} // Error.
class AE13<X extends E3<X>> {} // Error.
class AE14<X extends E4<X>> {} // Error.
class AE15<X extends E5<X>> {} // Error.
class AE16<X extends E6<X>> {} // Error.
class AE17<X extends E7<X>> {} // Error.
test() {
<X extends F1<X>>() {}; // Error.
<X extends F2<X>>() {}; // Error.
<X extends F3<X>>() {}; // Error.
<X extends F4<X>>() {}; // Error.
<X extends F5<X>>() {}; // Error.
<X extends F6<X>>() {}; // Error.
<X extends F7<X>>() {}; // Error.
<X extends E1<X>>() {}; // Error.
<X extends E2<X>>() {}; // Error.
<X extends E3<X>>() {}; // Error.
<X extends E4<X>>() {}; // Error.
<X extends E5<X>>() {}; // Error.
<X extends E6<X>>() {}; // Error.
<X extends E7<X>>() {}; // Error.
}