Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(619)

Side by Side Diff: test/browser/runtime_tests.js

Issue 1958683002: Fix void subtype checks. (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | tool/input_sdk/private/ddc_runtime/types.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 });
OLDNEW
« no previous file with comments | « lib/runtime/dart_sdk.js ('k') | tool/input_sdk/private/ddc_runtime/types.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698