// 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 It is an error if a required named parameter has a default value.
///
/// @description Check that it is an error if a required named parameter has a
/// default value.
/// @author sgrekhov@unipro.ru


class C<T extends num> {
  static void test1<T extends num>({required T? x = null}) {}
//                                              ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
  static void test2<T extends num>(int x, {required T? t = null}) {}
//                                                     ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
  static void test3<T extends num>(int x, {required T? y = null, String z = ""}) {}
//                                                     ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
  void test4({required T? x = null}) {}
//                        ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
  void test5(int x, {required T? t = null}) {}
//                               ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
  void test6(int x, {required T? y = null, int z = 42}) {}
//                               ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}

void test7<T extends num>({required T? x = null}) {}
//                                     ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
void test8<T extends num>(int x, {required T? t = null}) {}
//                                            ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
void test9<T extends num>(int x, {required T? y = null, int z = 42}) {}
//                                            ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified

main() {
}
