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