blob: 304cbed9816f1ecea73030da98891b09d6cbf585 [file] [log] [blame]
// Copyright (c) 2011, 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.
// VMOptions=--enable_type_checks
//
// Dart test program for testing optional named parameters in type tests.
import "package:expect/expect.dart";
class NamedParametersTypeTest {
static int testMain() {
int result = 0;
Function anyFunction;
void acceptFunNumOptBool(void funNumOptBool(num n, {bool b})) { };
void funNum(num n) { };
void funNumBool(num n, bool b) { };
void funNumOptBool(num n, {bool b: true}) { };
void funNumOptBoolX(num n, {bool x: true}) { };
anyFunction = funNum; // No error.
anyFunction = funNumBool; // No error.
anyFunction = funNumOptBool; // No error.
anyFunction = funNumOptBoolX; // No error.
acceptFunNumOptBool(funNumOptBool); // No error.
try {
acceptFunNumOptBool(funNum); // No static type warning.
} on TypeError catch (error) {
result += 1;
Expect.stringEquals("(num, {b: bool}) => void", error.dstType);
Expect.stringEquals("(num) => void", error.srcType);
}
try {
acceptFunNumOptBool(funNumBool); /// static type warning
} on TypeError catch (error) {
result += 10;
Expect.stringEquals("(num, {b: bool}) => void", error.dstType);
Expect.stringEquals("(num, bool) => void", error.srcType);
}
try {
acceptFunNumOptBool(funNumOptBoolX); /// static type warning
} on TypeError catch (error) {
result += 100;
Expect.stringEquals("(num, {b: bool}) => void", error.dstType);
Expect.stringEquals("(num, {x: bool}) => void", error.srcType);
}
return result;
}
}
main() {
Expect.equals(111, NamedParametersTypeTest.testMain());
}