| 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(funNum); // No error. | |
| 22 acceptFunNumOptBool(funNumOptBool); // No error. | 21 acceptFunNumOptBool(funNumOptBool); // No error. |
| 23 try { | 22 try { |
| 23 acceptFunNumOptBool(funNum); // No static type warning. |
| 24 } catch (TypeError error) { |
| 25 result += 1; |
| 26 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); |
| 27 Expect.stringEquals("(num) => void", error.srcType); |
| 28 } |
| 29 try { |
| 24 acceptFunNumOptBool(funNumBool); /// static type warning | 30 acceptFunNumOptBool(funNumBool); /// static type warning |
| 25 } catch (TypeError error) { | 31 } catch (TypeError error) { |
| 26 result += 1; | 32 result += 10; |
| 27 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); | 33 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); |
| 28 Expect.stringEquals("(num, bool) => void", error.srcType); | 34 Expect.stringEquals("(num, bool) => void", error.srcType); |
| 29 } | 35 } |
| 30 try { | 36 try { |
| 31 acceptFunNumOptBool(funNumOptBoolX); /// static type warning | 37 acceptFunNumOptBool(funNumOptBoolX); /// static type warning |
| 32 } catch (TypeError error) { | 38 } catch (TypeError error) { |
| 33 result += 10; | 39 result += 100; |
| 34 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); | 40 Expect.stringEquals("(num, [b: bool]) => void", error.dstType); |
| 35 Expect.stringEquals("(num, [x: bool]) => void", error.srcType); | 41 Expect.stringEquals("(num, [x: bool]) => void", error.srcType); |
| 36 } | 42 } |
| 37 return result; | 43 return result; |
| 38 } | 44 } |
| 39 } | 45 } |
| 40 | 46 |
| 41 main() { | 47 main() { |
| 42 Expect.equals(11, NamedParametersTypeTest.testMain()); | 48 Expect.equals(111, NamedParametersTypeTest.testMain()); |
| 43 } | 49 } |
| OLD | NEW |