blob: ca735099de37a800ff85c239f260ba28697751b6 [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 It is an error if a named parameter that is part of a required
/// group is not bound to an argument at a call site
///
/// @description Check that it is an error if a named parameter that is part of a
/// required group is not bound to an argument at a call site. Test legacy
/// pre-NNBD types
/// @author sgrekhov@unipro.ru
// Requirements=nnbd-weak
import "legacy_lib.dart";
class C {
static void test1({required A x, String y = "", required A z}) {}
void test2({required A x, String y = "", required A z}) {}
static void test11({required A? x, String y = "", required A? z}) {}
void test22({required A? x, String y = "", required A? z}) {}
}
void test3({required A x, String y = "", required A z}) {}
void test33({required A? x, String y = "", required A? z}) {}
typedef void Foo({required A x, String y, required A z});
typedef void Foo2({required A? x, String y, required A? z});
main() {
A a = new A();
Foo foo = ({required A x, String y = "", required A z}) {};
Foo2 foo2 = ({required A? x, String y = "", required A? z}) {};
C.test1(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
C.test11(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
C().test2(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
C().test22(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
test3(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
test33(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
foo(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
foo2(x: a, y: "");
// ^
// [analyzer] unspecified
// [cfe] unspecified
C.test1(z: a, y: "woman");
// ^
// [analyzer] unspecified
// [cfe] unspecified
C.test11(z: a, y: "cry");
// ^
// [analyzer] unspecified
// [cfe] unspecified
C().test2(z: a, y: "woman");
// ^
// [analyzer] unspecified
// [cfe] unspecified
C().test22(z: null, y: "cry");
// ^
// [analyzer] unspecified
// [cfe] unspecified
test3(z: a, y: "woman");
// ^
// [analyzer] unspecified
// [cfe] unspecified
test33(z: null, y: "cry");
// ^
// [analyzer] unspecified
// [cfe] unspecified
foo(z: a, y: "woman");
// ^
// [analyzer] unspecified
// [cfe] unspecified
foo(z: a, y: "cry");
// ^
// [analyzer] unspecified
// [cfe] unspecified
}