OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 | 4 |
5 var assert = chai.assert; | 5 var assert = chai.assert; |
6 var dart_sdk = dart_library.import('dart_sdk'); | 6 var dart_sdk = dart_library.import('dart_sdk'); |
7 var core = dart_sdk.core; | 7 var core = dart_sdk.core; |
8 var collection = dart_sdk.collection; | 8 var collection = dart_sdk.collection; |
9 var dart = dart_sdk.dart; | 9 var dart = dart_sdk.dart; |
10 var dartx = dart.dartx; | 10 var dartx = dart.dartx; |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 also: core.int}), false); | 640 also: core.int}), false); |
641 checkType(i_i2i, | 641 checkType(i_i2i, |
642 dart.functionType(core.int, [core.int], [core.int]), false); | 642 dart.functionType(core.int, [core.int], [core.int]), false); |
643 }); | 643 }); |
644 | 644 |
645 test('Method tearoffs', () => { | 645 test('Method tearoffs', () => { |
646 let c = collection; | 646 let c = collection; |
647 // Tear off of an inherited method | 647 // Tear off of an inherited method |
648 let map = new (Map$(core.int, core.String))(); | 648 let map = new (Map$(core.int, core.String))(); |
649 checkType(dart.bind(map, 'toString'), | 649 checkType(dart.bind(map, 'toString'), |
650 dart.functionType(String, [])); | 650 dart.functionType(String, [])); |
651 checkType(dart.bind(map, 'toString'), | 651 checkType(dart.bind(map, 'toString'), |
652 dart.functionType(int, []), false, true); | 652 dart.functionType(int, []), false, true); |
653 | 653 |
654 // Tear off of a method directly on the object | 654 // Tear off of a method directly on the object |
655 let smap = new (c.SplayTreeMap$(core.int, core.String))(); | 655 let smap = new (c.SplayTreeMap$(core.int, core.String))(); |
656 checkType(dart.bind(smap, 'forEach'), | 656 checkType(dart.bind(smap, 'forEach'), |
657 dart.functionType(dart.void, | 657 dart.functionType(dart.void, |
658 [dart.functionType(dart.void, [core.int, core.String])
])); | 658 [dart.functionType(dart.void, [core.int, core.String])
])); |
659 checkType(dart.bind(smap, 'forEach'), | 659 checkType(dart.bind(smap, 'forEach'), |
660 dart.functionType(dart.void, | 660 dart.functionType(dart.void, |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
944 | 944 |
945 let func2extra = dart.generic( | 945 let func2extra = dart.generic( |
946 (S, T) => dart.typedef('Func2', | 946 (S, T) => dart.typedef('Func2', |
947 () => functionType(S, [T], {extra: int}))); | 947 () => functionType(S, [T], {extra: int}))); |
948 | 948 |
949 run_test(func1, func2, func2opt, func1extra, func2extra); | 949 run_test(func1, func2, func2opt, func1extra, func2extra); |
950 }); | 950 }); |
951 | 951 |
952 test('fuzzy function types', () => { | 952 test('fuzzy function types', () => { |
953 always(functionType(int, [int]), functionType(dyn, [dyn])); | 953 always(functionType(int, [int]), functionType(dyn, [dyn])); |
| 954 always(functionType(int, [], [int]), functionType(dyn, [], [dyn])); |
| 955 always(functionType(int, [], [int]), functionType(dyn, [dyn])); |
| 956 always(functionType(int, [], [int]), functionType(dyn, [])); |
| 957 always(functionType(int, [int], {extra: int}), functionType(dyn, [dyn])); |
954 | 958 |
955 always(functionType(int, [], [int]), functionType(dyn, [], [dyn])); | 959 always(functionType(dyn, [dyn]), functionType(dyn, [dyn])); |
| 960 always(functionType(dyn, [], [dyn]), functionType(dyn, [], [dyn])); |
| 961 always(functionType(dyn, [], [dyn]), functionType(dyn, [dyn])); |
| 962 always(functionType(dyn, [], [dyn]), functionType(dyn, [])); |
| 963 always(functionType(dyn, [dyn], {extra: dyn}), functionType(dyn, [dyn])); |
956 | 964 |
957 always(functionType(int, [], [int]), functionType(dyn, [dyn])); | 965 }); |
958 | 966 |
959 always(functionType(int, [], [int]), functionType(dyn, [])); | 967 test('void function types', () => { |
| 968 always(functionType(int, [int]), functionType(dart.void, [dyn])); |
| 969 always(functionType(int, [], [int]), functionType(dart.void, [], [dyn])); |
| 970 always(functionType(int, [], [int]), functionType(dart.void, [dyn])); |
| 971 always(functionType(int, [], [int]), functionType(dart.void, [])); |
| 972 always(functionType(int, [int], {extra: int}), functionType(dart.void, [dyn]
)); |
960 | 973 |
961 always(functionType(int, [int], {extra: int}), functionType(dyn, [dyn])); | 974 always(functionType(dart.void, [int]), functionType(dart.void, [dyn])); |
| 975 always(functionType(dart.void, [], [int]), functionType(dart.void, [], [dyn]
)); |
| 976 always(functionType(dart.void, [], [int]), functionType(dart.void, [dyn])); |
| 977 always(functionType(dart.void, [], [int]), functionType(dart.void, [])); |
| 978 always(functionType(dart.void, [int], {extra: int}), functionType(dart.void,
[dyn])); |
| 979 |
| 980 always(functionType(dyn, [dyn]), functionType(dart.void, [dyn])); |
| 981 always(functionType(dyn, [], [dyn]), functionType(dart.void, [], [dyn])); |
| 982 always(functionType(dyn, [], [dyn]), functionType(dart.void, [dyn])); |
| 983 always(functionType(dyn, [], [dyn]), functionType(dart.void, [])); |
| 984 always(functionType(dyn, [dyn], {extra: dyn}), functionType(dart.void, [dyn]
)); |
| 985 |
| 986 always(functionType(dart.void, [dyn]), functionType(dart.void, [dyn])); |
| 987 always(functionType(dart.void, [], [dyn]), functionType(dart.void, [], [dyn]
)); |
| 988 always(functionType(dart.void, [], [dyn]), functionType(dart.void, [dyn])); |
| 989 always(functionType(dart.void, [], [dyn]), functionType(dart.void, [])); |
| 990 always(functionType(dart.void, [dyn], {extra: dyn}), functionType(dart.void,
[dyn])); |
| 991 |
| 992 always(functionType(dart.void, [int]), functionType(dyn, [dyn])); |
| 993 always(functionType(dart.void, [], [int]), functionType(dyn, [], [dyn])); |
| 994 always(functionType(dart.void, [], [int]), functionType(dyn, [dyn])); |
| 995 always(functionType(dart.void, [], [int]), functionType(dyn, [])); |
| 996 always(functionType(dart.void, [int], {extra: int}), functionType(dyn, [dyn]
)); |
| 997 |
| 998 never(functionType(dart.void, [int]), functionType(int, [dyn])); |
| 999 never(functionType(dart.void, [], [int]), functionType(int, [], [dyn])); |
| 1000 never(functionType(dart.void, [], [int]), functionType(int, [dyn])); |
| 1001 never(functionType(dart.void, [], [int]), functionType(int, [])); |
| 1002 never(functionType(dart.void, [int], {extra: int}), functionType(int, [dyn])
); |
| 1003 |
| 1004 never(functionType(dart.void, [int]), functionType(int, [int])); |
| 1005 never(functionType(dart.void, [], [int]), functionType(int, [], [int])); |
| 1006 never(functionType(dart.void, [], [int]), functionType(int, [int])); |
| 1007 never(functionType(dart.void, [], [int]), functionType(int, [])); |
| 1008 never(functionType(dart.void, [int], {extra: int}), functionType(int, [int])
); |
962 | 1009 |
963 }); | 1010 }); |
964 | 1011 |
965 test('higher-order typedef', () => { | 1012 test('higher-order typedef', () => { |
966 let Func$ = dart.generic((S, T) => | 1013 let Func$ = dart.generic((S, T) => |
967 dart.typedef('Func', () => | 1014 dart.typedef('Func', () => |
968 functionType(T, [S]))); | 1015 functionType(T, [S]))); |
969 let Func2$ = dart.generic((R, S, T) => | 1016 let Func2$ = dart.generic((R, S, T) => |
970 dart.typedef('Func2', () => | 1017 dart.typedef('Func2', () => |
971 functionType(T, [Func$(R, S)]))); | 1018 functionType(T, [Func$(R, S)]))); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 | 1054 |
1008 suite('primitives', function() { | 1055 suite('primitives', function() { |
1009 'use strict'; | 1056 'use strict'; |
1010 | 1057 |
1011 test('fixed length list', () => { | 1058 test('fixed length list', () => { |
1012 let list = new core.List(10); | 1059 let list = new core.List(10); |
1013 list[0] = 42; | 1060 list[0] = 42; |
1014 assert.throws(() => list.add(42)); | 1061 assert.throws(() => list.add(42)); |
1015 }); | 1062 }); |
1016 }); | 1063 }); |
OLD | NEW |