blob: 77e1eb9dfd24faebdafced9e755dcc5dc5ccbe1e [file] [log] [blame]
/*
* 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 The modifier required is added as a built-in identifier. The
* grammar of function types is extended to allow any named parameter
* declaration to be prefixed by the required modifier (e.g. int Function(int,
* {int? y, required int z}).
*
* @description Check that any named parameter declaration can be prefixed by
* the 'required' modifier
* @author sgrekhov@unipro.ru
*/
// SharedOptions=--enable-experiment=non-nullable
import "../../Utils/expect.dart";
class A {}
class C {
static String test1({required String x}) => x;
String test2({required String x}) => x;
A test3({covariant required A x}) => x;
A test4({required covariant A x}) => x;
}
String test5({required String x}) => x;
typedef String Foo({required String x});
Foo test6 = ({required String x}) => x;
Function test7 = ({required String x}) => x;
main() {
A a = new A();
Expect.equals("Love me tender", C.test1(x: "Love me tender"));
Expect.equals("love me sweet", C().test2(x: "love me sweet"));
Expect.equals(a, C().test3(x: a));
Expect.equals(a, C().test4(x: a));
Expect.equals("never let me go", test5(x: "never let me go"));
Expect.equals("You have made my life complete",
test6(x: "You have made my life complete"));
Expect.equals("and I love you so", test7(x: "and I love you so"));
}