OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // VMOptions=--enable_type_checks | 4 // VMOptions=--enable_type_checks |
5 // | 5 // |
6 // Dart test program for testing named parameters in type tests. | 6 // Dart test program for testing named parameters in type tests. |
7 | 7 |
8 class NamedParametersTypeTest { | 8 class NamedParametersTypeTest { |
9 static int testMain() { | 9 static int testMain() { |
10 int result = 0; | 10 int result = 0; |
11 Function anyFunction; | 11 Function anyFunction; |
12 void acceptFunNumOptBool(void funNumOptBool(num num, [bool b])) { }; | 12 void acceptFunNumOptBool(void funNumOptBool(num num, [bool b])) { }; |
13 void funNum(num num) { }; | 13 void funNum(num num) { }; |
14 void funNumBool(num num, bool b) { }; | 14 void funNumBool(num num, bool b) { }; |
15 void funNumOptBool(num num, [bool b = true]) { }; | 15 void funNumOptBool(num num, [bool b = true]) { }; |
16 void funNumOptBoolX(num num, [bool x = true]) { }; | 16 void funNumOptBoolX(num num, [bool x = true]) { }; |
17 anyFunction = funNum; // No error. | 17 anyFunction = funNum; // No error. |
18 anyFunction = funNumBool; // No error. | 18 anyFunction = funNumBool; // No error. |
19 anyFunction = funNumOptBool; // No error. | 19 anyFunction = funNumOptBool; // No error. |
20 anyFunction = funNumOptBoolX; // No error. | 20 anyFunction = funNumOptBoolX; // No error. |
21 acceptFunNumOptBool(funNumOptBool); // No error. | 21 acceptFunNumOptBool(funNumOptBool); // No error. |
22 try { | 22 try { |
23 acceptFunNumOptBool(funNum); // No static type warning. | 23 acceptFunNumOptBool(funNum); // No static type warning. |
24 } catch (TypeError error) { | 24 } on TypeError catch (error) { |
25 result += 1; | 25 result += 1; |
26 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); | 26 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); |
27 Expect.stringEquals("(num) => void", error.srcType); | 27 Expect.stringEquals("(num) => void", error.srcType); |
28 } | 28 } |
29 try { | 29 try { |
30 acceptFunNumOptBool(funNumBool); /// static type warning | 30 acceptFunNumOptBool(funNumBool); /// static type warning |
31 } catch (TypeError error) { | 31 } on TypeError catch (error) { |
32 result += 10; | 32 result += 10; |
33 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); | 33 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); |
34 Expect.stringEquals("(num, bool) => void", error.srcType); | 34 Expect.stringEquals("(num, bool) => void", error.srcType); |
35 } | 35 } |
36 try { | 36 try { |
37 acceptFunNumOptBool(funNumOptBoolX); /// static type warning | 37 acceptFunNumOptBool(funNumOptBoolX); /// static type warning |
38 } catch (TypeError error) { | 38 } on TypeError catch (error) { |
39 result += 100; | 39 result += 100; |
40 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); | 40 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); |
41 Expect.stringEquals("(num, [x: bool]) => void", error.srcType); | 41 Expect.stringEquals("(num, [x: bool]) => void", error.srcType); |
42 } | 42 } |
43 return result; | 43 return result; |
44 } | 44 } |
45 } | 45 } |
46 | 46 |
47 main() { | 47 main() { |
48 Expect.equals(111, NamedParametersTypeTest.testMain()); | 48 Expect.equals(111, NamedParametersTypeTest.testMain()); |
49 } | 49 } |
OLD | NEW |