// 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 [m != l].
/// @description Checks that compile error is thrown for the case with one type
/// argument
/// @author iarkh@unipro.ru


class C<T> {}

main() {
  C c1;

  C<int>       c2;
  C<List<num>> c3;
  C<void>      c4;
  C<Null>      c5;
  C<C>         c6;

  C<int, int>                 c7;  //# 01: compile-time error
  C<dynamic, dynamic>         c8;  //# 02: compile-time error
  C<int, String, long>        c9;  //# 03: compile-time error
  C<int, int, int, int, int> c10;  //# 04: compile-time error
}

