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