blob: 08f71328c9c4931cd8a4705b7e6ab12b39aa1698 [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. Test one named required parameter
* @author
// Requirements=nnbd-strong
import "../../Utils/expect.dart";
class A {}
class C {
static String staticTest1({required String x}) => x;
static String staticTest2({required final x}) => x;
String instanceTest1({required String x}) => x;
A instanceTest2({required covariant A x}) => x;
String instanceTest3({required final x}) => x;
String test1({required String x}) => x;
typedef String Foo({required String x});
Foo test2 = ({required String x}) => x;
Function test3 = ({required String x}) => x;
String test4({required final x}) => x;
main() {
A a = new A();
Expect.equals("Show must go on", C.staticTest1(x: "Show must go on"));
Expect.equals("Lily was here", C.staticTest2(x: "Lily was here"));
Expect.equals("Let it be", C().instanceTest1(x: "Let it be"));
Expect.equals(a, C().instanceTest2(x: a));
Expect.equals("No woman no cry", C().instanceTest3(x: "No woman no cry"));
Expect.equals("I can't get no", test1(x: "I can't get no"));
Expect.equals("I can't get no", test2(x: "I can't get no"));
Expect.equals("I can't get no", test3(x: "I can't get no"));
Expect.equals("I can't get no", test4(x: "I can't get no"));