// 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.

/// @assertion Any use of a type [T] which is not well-bounded is a
/// compile-time error.
/// @description Checks that compile error is thrown when function with not well
/// bounded type parameter is declared
/// @author iarkh@unipro.ru


class A<T extends A<T>> {}

void testme1<X extends A>() {}
//           ^
// [cfe] Generic type 'A' can't be used without type arguments in a type variable bound.
//                     ^
// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND
void testme2<X extends A<A>>() {}
//           ^
// [cfe] Generic type 'A' can't be used without type arguments in a type variable bound.
//                       ^
// [analyzer] COMPILE_TIME_ERROR.NOT_INSTANTIATED_BOUND
void testme3<X extends A<int>>() {}
//           ^
// [cfe] Type argument 'int' doesn't conform to the bound 'A<T>' of the type variable 'T' on 'A'.
//                       ^^^
// [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS

main() {
}
