| // 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. |
| |
| // @dart = 2.9 |
| |
| /// @assertion A generic class declaration introduces a generic class into the |
| /// enclosing library scope. A generic class is a mapping that accepts a list of |
| /// actual type arguments and maps them to a class. Consider a generic class |
| /// declaration [G] named [C] with formal type parameter declarations [X1 extends |
| /// B1,..., Xm extends Bm], and a parameterized type [T] of the form |
| /// [C<T1,..., Tl>]. |
| /// ... |
| /// It is a compile-time error if T is not well-bounded. |
| /// @description Checks that compile error is thrown for the case with one type |
| /// argument |
| /// @author iarkh@unipro.ru |
| |
| |
| class A<T> {} |
| class C<T extends C<T>> {} |
| |
| main() { |
| A<int> a1; |
| A<C> a2; |
| A<C<Null>> a3; |
| A<C<dynamic>> a4; |
| |
| A<C<int>> a5; //# 01: compile-time error |
| A<C<C<int>>> a6; //# 02: compile-time error |
| A<C<C<C<C<C<C<int>>>>>>> a7; //# 03: compile-time error |
| |
| C<C<int>> c1; //# 04: compile-time error |
| C<C<C<int>>> c2; //# 05: compile-time error |
| C<C<C<C<C<C<C<int>>>>>>> c3; //# 06: compile-time error |
| } |
| |