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

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

Issue 2934623003: fix #29753, use ES5 constructors for ddc (Closed)
Patch Set: rebase Created 3 years, 6 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
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 define(['dart_sdk'], function(dart_sdk) { 5 define(['dart_sdk'], function(dart_sdk) {
6 const assert = chai.assert; 6 const assert = chai.assert;
7 const async = dart_sdk.async; 7 const async = dart_sdk.async;
8 const core = dart_sdk.core; 8 const core = dart_sdk.core;
9 const collection = dart_sdk.collection; 9 const collection = dart_sdk.collection;
10 const dart = dart_sdk.dart; 10 const dart = dart_sdk.dart;
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 let Map$ = core.Map$; 171 let Map$ = core.Map$;
172 let double = core.double; 172 let double = core.double;
173 let int = core.int; 173 let int = core.int;
174 let num = core.num; 174 let num = core.num;
175 let bool = core.bool; 175 let bool = core.bool;
176 176
177 class A {} 177 class A {}
178 class B extends A {} 178 class B extends A {}
179 class C extends B {} 179 class C extends B {}
180 180
181 let AA$ = generic((T, U) => class AA extends core.Object {}); 181 let AA$ = generic((T, U) => {
182 class AA extends core.Object {}
183 (AA.new = function() {}).prototype = AA.prototype;
184 return AA;
185 });
182 let AA = AA$(); 186 let AA = AA$();
183 let BB$ = generic((T, U) => class BB extends AA$(U, T) {}); 187 let BB$ = generic((T, U) => {
188 class BB extends AA$(U, T) {}
189 (BB.new = function() {}).prototype = BB.prototype;
190 return BB;
191 });
184 let BB = BB$(); 192 let BB = BB$();
185 class CC extends BB$(String, List) {} 193 class CC extends BB$(String, List) {}
194 (CC.new = function() {}).prototype = CC.prototype;
186 195
187 let Func2 = typedef('Func2', () => fnTypeFuzzy(dynamic, [dynamic, dynamic])) ; 196 let Func2 = typedef('Func2', () => fnTypeFuzzy(dynamic, [dynamic, dynamic])) ;
188 let Foo = typedef('Foo', () => fnTypeFuzzy(B, [B, String])); 197 let Foo = typedef('Foo', () => fnTypeFuzzy(B, [B, String]));
189 198
190 let FuncG$ = generic((T, U) => typedef('FuncG', () => fnTypeFuzzy(T, [T, U]) )) 199 let FuncG$ = generic((T, U) => typedef('FuncG', () => fnTypeFuzzy(T, [T, U]) ))
191 let FuncG = FuncG$(); 200 let FuncG = FuncG$();
192 201
193 // TODO(vsm): Revisit when we encode types on functions properly. 202 // TODO(vsm): Revisit when we encode types on functions properly.
194 // A bar1(C c, String s) => null; 203 // A bar1(C c, String s) => null;
195 function bar1(c, s) { return null; } 204 function bar1(c, s) { return null; }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 expect(cast(5, int), 5); 288 expect(cast(5, int), 5);
280 if (intIsNonNullable) { 289 if (intIsNonNullable) {
281 expect(() => cast(null, int), throws); 290 expect(() => cast(null, int), throws);
282 } else { 291 } else {
283 expect(cast(null, int), null); 292 expect(cast(null, int), null);
284 } 293 }
285 }); 294 });
286 295
287 test('dynamic', () => { 296 test('dynamic', () => {
288 expect(isGroundType(dynamic), true); 297 expect(isGroundType(dynamic), true);
289 checkType(new Object(), dynamic); 298 checkType(new Object.new(), dynamic);
290 checkType(null, dynamic); 299 checkType(null, dynamic);
291 300
292 expect(cast(null, dynamic), null); 301 expect(cast(null, dynamic), null);
293 }); 302 });
294 303
295 test('Object', () => { 304 test('Object', () => {
296 expect(isGroundType(Object), true); 305 expect(isGroundType(Object), true);
297 checkType(new Object(), dynamic); 306 checkType(new Object.new(), dynamic);
298 checkType(null, Object); 307 checkType(null, Object);
299 308
300 expect(cast(null, Object), null); 309 expect(cast(null, Object), null);
301 }); 310 });
302 311
303 test('null', () => { 312 test('null', () => {
304 // Object, dynamic cases are already handled above. 313 // Object, dynamic cases are already handled above.
305 checkType(null, core.Null); 314 checkType(null, core.Null);
306 checkType(null, core.String, false); 315 checkType(null, core.String, false);
307 checkType(null, core.int, false); 316 checkType(null, core.int, false);
(...skipping 24 matching lines...) Expand all
332 assert.isTrue(dart.is(3, FutureOr(double))); 341 assert.isTrue(dart.is(3, FutureOr(double)));
333 assert.isFalse(dart.is(3.5, FutureOr(int))); 342 assert.isFalse(dart.is(3.5, FutureOr(int)));
334 assert.isTrue(dart.is(3.5, FutureOr(double))); 343 assert.isTrue(dart.is(3.5, FutureOr(double)));
335 344
336 assert.equal(dart.as(3, FutureOr(FutureOr(double))), 3); 345 assert.equal(dart.as(3, FutureOr(FutureOr(double))), 3);
337 assert.isTrue(dart.is(3, FutureOr(FutureOr(double)))); 346 assert.isTrue(dart.is(3, FutureOr(FutureOr(double))));
338 347
339 }); 348 });
340 349
341 test('Map', () => { 350 test('Map', () => {
342 let m1 = new (Map$(String, String))(); 351 let m1 = Map$(String, String).new();
343 let m2 = new (Map$(Object, Object))(); 352 let m2 = Map$(Object, Object).new();
344 let m3 = new Map(); 353 let m3 = Map.new();
345 let m4 = new (collection.HashMap$(dart.dynamic, dart.dynamic))(); 354 let m4 = collection.HashMap$(dart.dynamic, dart.dynamic).new();
346 let m5 = new collection.LinkedHashMap(); 355 let m5 = collection.LinkedHashMap.new();
347 let m6 = new (Map$(String, dart.dynamic))(); 356 let m6 = Map$(String, dart.dynamic).new();
348
349 357
350 expect(isGroundType(Map), true); 358 expect(isGroundType(Map), true);
351 expect(isGroundType(getReifiedType(m1)), false); 359 expect(isGroundType(getReifiedType(m1)), false);
352 expect(isGroundType(Map$(String, String)), false); 360 expect(isGroundType(Map$(String, String)), false);
353 expect(isGroundType(getReifiedType(m2)), true); 361 expect(isGroundType(getReifiedType(m2)), true);
354 expect(isGroundType(Map$(Object, Object)), true); 362 expect(isGroundType(Map$(Object, Object)), true);
355 expect(isGroundType(getReifiedType(m3)), true); 363 expect(isGroundType(getReifiedType(m3)), true);
356 expect(isGroundType(Map), true); 364 expect(isGroundType(Map), true);
357 expect(isGroundType(getReifiedType(m4)), true); 365 expect(isGroundType(getReifiedType(m4)), true);
358 expect(isGroundType(collection.HashMap$(dynamic, dynamic)), true); 366 expect(isGroundType(collection.HashMap$(dynamic, dynamic)), true);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 // dart.StrongModeError); 406 // dart.StrongModeError);
399 // assert.throws(() => dart.as(m6, Map$(String, String)), 407 // assert.throws(() => dart.as(m6, Map$(String, String)),
400 // dart.StrongModeError); 408 // dart.StrongModeError);
401 assert.equal(dart.as(m1, Map$(String, String)), m1); 409 assert.equal(dart.as(m1, Map$(String, String)), m1);
402 // assert.throws(() => dart.as(m2, Map$(String, String)), 410 // assert.throws(() => dart.as(m2, Map$(String, String)),
403 // dart.StrongModeError); 411 // dart.StrongModeError);
404 }); 412 });
405 413
406 test('constructors', () => { 414 test('constructors', () => {
407 class C extends core.Object { 415 class C extends core.Object {
408 new(x) {};
409 named(x, y) {};
410 } 416 }
411 dart.defineNamedConstructor(C, 'named'); 417 (C.new = function(x) {}).prototype = C.prototype;
418 (C.named = function(x, y) {}).prototype = C.prototype;
412 dart.setSignature(C, { 419 dart.setSignature(C, {
413 constructors: () => ({ 420 constructors: () => ({
414 new: dart.fnType(C, [core.int]), 421 new: dart.fnType(C, [core.int]),
415 named: dart.fnType(C, [core.int, core.int]) 422 named: dart.fnType(C, [core.int, core.int])
416 }) 423 })
417 }); 424 });
418 let getType = dart.classGetConstructorType; 425 let getType = dart.classGetConstructorType;
419 isSubtype(getType(C), dart.fnTypeFuzzy(C, [core.int])); 426 isSubtype(getType(C), dart.fnTypeFuzzy(C, [core.int]));
420 isSubtype(getType(C), dart.fnTypeFuzzy(C, [core.String]), false); 427 isSubtype(getType(C), dart.fnTypeFuzzy(C, [core.String]), false);
421 isSubtype(getType(C, 'new'), dart.fnTypeFuzzy(C, [core.int])); 428 isSubtype(getType(C, 'new'), dart.fnTypeFuzzy(C, [core.int]));
422 isSubtype(getType(C, 'new'), dart.fnTypeFuzzy(C, [core.String]), false); 429 isSubtype(getType(C, 'new'), dart.fnTypeFuzzy(C, [core.String]), false);
423 isSubtype(getType(C, 'named'), dart.fnTypeFuzzy(C, [core.int, core.int])); 430 isSubtype(getType(C, 'named'), dart.fnTypeFuzzy(C, [core.int, core.int]));
424 isSubtype(getType(C, 'named'), 431 isSubtype(getType(C, 'named'),
425 dart.fnTypeFuzzy(C, [core.int, core.String]), false); 432 dart.fnTypeFuzzy(C, [core.int, core.String]), false);
426 }); 433 });
427 434
428 test('generic and inheritance', () => { 435 test('generic and inheritance', () => {
429 let aaraw = new AA(); 436 let aaraw = new AA.new();
430 let aarawtype = getReifiedType(aaraw); 437 let aarawtype = getReifiedType(aaraw);
431 let aadynamic = new (AA$(dynamic, dynamic))(); 438 let aadynamic = new (AA$(dynamic, dynamic).new)();
432 let aadynamictype = getReifiedType(aadynamic); 439 let aadynamictype = getReifiedType(aadynamic);
433 let aa = new (AA$(String, List))(); 440 let aa = new (AA$(String, List).new)();
434 let aatype = getReifiedType(aa); 441 let aatype = getReifiedType(aa);
435 let bb = new (BB$(String, List))(); 442 let bb = new (BB$(String, List).new)();
436 let bbtype = getReifiedType(bb); 443 let bbtype = getReifiedType(bb);
437 let cc = new CC(); 444 let cc = new CC.new();
438 let cctype = getReifiedType(cc); 445 let cctype = getReifiedType(cc);
439 // We don't allow constructing bad types. 446 // We don't allow constructing bad types.
440 // This was AA<String> in Dart (wrong number of type args). 447 // This was AA<String> in Dart (wrong number of type args).
441 let aabad = new (AA$(dart.dynamic, dart.dynamic))(); 448 let aabad = new (AA$(dart.dynamic, dart.dynamic).new)();
442 let aabadtype = getReifiedType(aabad); 449 let aabadtype = getReifiedType(aabad);
443 450
444 expect(isGroundType(aatype), false); 451 expect(isGroundType(aatype), false);
445 expect(isGroundType(AA$(String, List)), false); 452 expect(isGroundType(AA$(String, List)), false);
446 expect(isGroundType(bbtype), false); 453 expect(isGroundType(bbtype), false);
447 expect(isGroundType(BB$(String, List)), false); 454 expect(isGroundType(BB$(String, List)), false);
448 expect(isGroundType(cctype), true); 455 expect(isGroundType(cctype), true);
449 expect(isGroundType(CC), true); 456 expect(isGroundType(CC), true);
450 checkType(cc, aatype, false); 457 checkType(cc, aatype, false);
451 checkType(cc, AA$(String, List), false); 458 checkType(cc, AA$(String, List), false);
(...skipping 18 matching lines...) Expand all
470 checkType(aadynamic, aarawtype); 477 checkType(aadynamic, aarawtype);
471 checkType(aadynamic, AA); 478 checkType(aadynamic, AA);
472 }); 479 });
473 480
474 test('void', () => { 481 test('void', () => {
475 //checkType((x) => x, type((void _(x)) {})); 482 //checkType((x) => x, type((void _(x)) {}));
476 }); 483 });
477 484
478 test('mixins', () => { 485 test('mixins', () => {
479 let c = collection; 486 let c = collection;
480 var s1 = new (c.SplayTreeSet$(String))(); 487 var s1 = new (c.SplayTreeSet$(String).new)();
481 488
482 checkType(s1, c.IterableMixin); 489 checkType(s1, c.IterableMixin);
483 checkType(s1, c.IterableMixin$(String)); 490 checkType(s1, c.IterableMixin$(String));
484 checkType(s1, c.IterableMixin$(int), false); 491 checkType(s1, c.IterableMixin$(int), false);
485 492
486 checkType(s1, c.SetMixin); 493 checkType(s1, c.SetMixin);
487 checkType(s1, c.SetMixin$(String)); 494 checkType(s1, c.SetMixin$(String));
488 checkType(s1, c.SetMixin$(int), false); 495 checkType(s1, c.SetMixin$(int), false);
489 }); 496 });
490 497
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 600
594 assert.throws(() => dart.dcall(i_i2i, 0, 1)); 601 assert.throws(() => dart.dcall(i_i2i, 0, 1));
595 assert.throws(() => dart.dcall(i_i2i, "hello", "world")); 602 assert.throws(() => dart.dcall(i_i2i, "hello", "world"));
596 assert.equal(dart.dcall(i_i2i, 0), 0); 603 assert.equal(dart.dcall(i_i2i, 0), 0);
597 assert.throws(() => dart.dcall(i_i2i, 0, 1, 2)); 604 assert.throws(() => dart.dcall(i_i2i, 0, 1, 2));
598 assert.equal(dart.dcall(i_i2i, 0, {extra: 3}), 0); 605 assert.equal(dart.dcall(i_i2i, 0, {extra: 3}), 0);
599 }); 606 });
600 607
601 test('dsend', () => { 608 test('dsend', () => {
602 class Tester extends core.Object { 609 class Tester extends core.Object {
603 new() {
604 this.f = dart.fn(x => x,
605 dart.fnType(core.int, [core.int]));
606 this.me = this;
607 }
608 m(x, y) {return x;} 610 m(x, y) {return x;}
609 call(x) {return x;} 611 call(x) {return x;}
610 static s(x, y) { return x;} 612 static s(x, y) { return x;}
611 } 613 }
614 (Tester.new = function() {
615 this.f = dart.fn(x => x,
616 dart.fnType(core.int, [core.int]));
617 this.me = this;
618 }).prototype = Tester.prototype;
612 dart.setSignature(Tester, { 619 dart.setSignature(Tester, {
613 methods: () => ({ 620 methods: () => ({
614 m: dart.fnType(core.int, [core.int, core.int]), 621 m: dart.fnType(core.int, [core.int, core.int]),
615 call: dart.fnType(core.int, [core.int]) 622 call: dart.fnType(core.int, [core.int])
616 }), 623 }),
617 statics: () => ({ 624 statics: () => ({
618 s: dart.fnType(core.String, [core.String]) 625 s: dart.fnType(core.String, [core.String])
619 }), 626 }),
620 names: ['s'] 627 names: ['s']
621 }) 628 })
622 let o = new Tester(); 629 let o = new Tester.new();
623 630
624 // Method send 631 // Method send
625 assert.equal(dart.dsend(o, 'm', 3, 4), 3); 632 assert.equal(dart.dsend(o, 'm', 3, 4), 3);
626 assert.equal(dart.dsend(o, 'm', null, 4), null); 633 assert.equal(dart.dsend(o, 'm', null, 4), null);
627 assert.throws(() => dart.dsend(o, 'm', 3)); 634 assert.throws(() => dart.dsend(o, 'm', 3));
628 assert.throws(() => dart.dsend(o, 'm', "hello", "world")); 635 assert.throws(() => dart.dsend(o, 'm', "hello", "world"));
629 assert.throws(() => dart.dsend(o, 'q', 3)); 636 assert.throws(() => dart.dsend(o, 'q', 3));
630 637
631 // Method send through a field 638 // Method send through a field
632 assert.equal(dart.dsend(o, 'f', 3), 3); 639 assert.equal(dart.dsend(o, 'f', 3), 3);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 checkType(i_i2i, 718 checkType(i_i2i,
712 dart.fnTypeFuzzy(core.int, [], {extra: core.int, 719 dart.fnTypeFuzzy(core.int, [], {extra: core.int,
713 also: core.int}), false); 720 also: core.int}), false);
714 checkType(i_i2i, 721 checkType(i_i2i,
715 dart.fnTypeFuzzy(core.int, [core.int], [core.int]), false); 722 dart.fnTypeFuzzy(core.int, [core.int], [core.int]), false);
716 }); 723 });
717 724
718 test('Method tearoffs', () => { 725 test('Method tearoffs', () => {
719 let c = collection; 726 let c = collection;
720 // Tear off of an inherited method 727 // Tear off of an inherited method
721 let map = new (Map$(core.int, core.String))(); 728 let map = Map$(core.int, core.String).new();
722 checkType(dart.bind(map, 'toString'), 729 checkType(dart.bind(map, 'toString'),
723 dart.fnTypeFuzzy(String, [])); 730 dart.fnTypeFuzzy(String, []));
724 checkType(dart.bind(map, 'toString'), 731 checkType(dart.bind(map, 'toString'),
725 dart.fnTypeFuzzy(int, []), false, true); 732 dart.fnTypeFuzzy(int, []), false, true);
726 733
727 // Tear off of a method directly on the object 734 // Tear off of a method directly on the object
728 let smap = new (c.SplayTreeMap$(core.int, core.String))(); 735 let smap = new (c.SplayTreeMap$(core.int, core.String).new)();
729 checkType(dart.bind(smap, 'forEach'), 736 checkType(dart.bind(smap, 'forEach'),
730 dart.fnTypeFuzzy(dart.void, 737 dart.fnTypeFuzzy(dart.void,
731 [dart.fnTypeFuzzy(dart.void, [core.int, core.String] )])); 738 [dart.fnTypeFuzzy(dart.void, [core.int, core.String] )]));
732 checkType(dart.bind(smap, 'forEach'), 739 checkType(dart.bind(smap, 'forEach'),
733 dart.fnTypeFuzzy(dart.void, 740 dart.fnTypeFuzzy(dart.void,
734 [dart.fnTypeFuzzy(dart.void, 741 [dart.fnTypeFuzzy(dart.void,
735 [core.String, core.String])]), false, true); 742 [core.String, core.String])]), false, true);
736 743
737 // Tear off of a mixed in method 744 // Tear off of a mixed in method
738 let mapB = new (c.MapBase$(core.int, core.int))(); 745 let mapB = new (c.MapBase$(core.int, core.int).new)();
739 checkType(dart.bind(mapB, 'forEach'), 746 checkType(dart.bind(mapB, 'forEach'),
740 dart.fnTypeFuzzy(dart.void, [ 747 dart.fnTypeFuzzy(dart.void, [
741 dart.fnTypeFuzzy(dart.void, [core.int, core.int])])); 748 dart.fnTypeFuzzy(dart.void, [core.int, core.int])]));
742 checkType(dart.bind(mapB, 'forEach'), 749 checkType(dart.bind(mapB, 'forEach'),
743 dart.fnTypeFuzzy(dart.void, [ 750 dart.fnTypeFuzzy(dart.void, [
744 dart.fnTypeFuzzy(dart.void, [core.int, core.String])]), 751 dart.fnTypeFuzzy(dart.void, [core.int, core.String])]),
745 false, true); 752 false, true);
746 753
747 // Tear off of a method with a symbol name 754 // Tear off of a method with a symbol name
748 let listB = new (c.ListBase$(core.int))(); 755 let listB = new (c.ListBase$(core.int).new)();
749 checkType(dart.bind(listB, dartx.add), 756 checkType(dart.bind(listB, dartx.add),
750 dart.fnTypeFuzzy(dart.void, [core.int])); 757 dart.fnTypeFuzzy(dart.void, [core.int]));
751 checkType(dart.bind(listB, dartx.add), 758 checkType(dart.bind(listB, dartx.add),
752 dart.fnTypeFuzzy(dart.void, [core.String]), false, true); 759 dart.fnTypeFuzzy(dart.void, [core.String]), false, true);
753 760
754 // Tear off of a static method 761 // Tear off of a static method
755 checkType(c.ListBase.listToString, 762 checkType(c.ListBase.listToString,
756 dart.fnTypeFuzzy(core.String, [core.List])); 763 dart.fnTypeFuzzy(core.String, [core.List]));
757 checkType(c.ListBase.listToString, 764 checkType(c.ListBase.listToString,
758 dart.fnTypeFuzzy(core.String, [core.String]), false, true); 765 dart.fnTypeFuzzy(core.String, [core.String]), false, true);
(...skipping 29 matching lines...) Expand all
788 795
789 class M2 { 796 class M2 {
790 m(x) {return x;} 797 m(x) {return x;}
791 }; 798 };
792 dart.setSignature(M2, { 799 dart.setSignature(M2, {
793 methods: () => ({ 800 methods: () => ({
794 m: dart.fnType(core.Object, [core.int]), 801 m: dart.fnType(core.Object, [core.int]),
795 }) 802 })
796 }); 803 });
797 804
798 class O extends dart.mixin(Base, M1, M2) { 805 class O extends dart.mixin(Base, M1, M2) {}
799 new() {}; 806 (O.new = function() {}).prototype = O.prototype;
800 };
801 dart.setSignature(O, {}); 807 dart.setSignature(O, {});
802 var obj = new O(); 808 var obj = new O.new();
803 var m = dart.bind(obj, 'm'); 809 var m = dart.bind(obj, 'm');
804 checkType(m, dart.fnTypeFuzzy(core.Object, [core.int])); 810 checkType(m, dart.fnTypeFuzzy(core.Object, [core.int]));
805 checkType(m, dart.fnTypeFuzzy(core.int, [core.int]), false, true); 811 checkType(m, dart.fnTypeFuzzy(core.int, [core.int]), false, true);
806 812
807 // Test inherited signatures 813 // Test inherited signatures
808 class P extends O { 814 class P extends O {
809 new() {};
810 m(x) {return x;}; 815 m(x) {return x;};
811 }; 816 };
817 (P.new = function() {}).prototype = P.prototype;
812 dart.setSignature(P, {}); 818 dart.setSignature(P, {});
813 var obj = new P(); 819 var obj = new P.new();
814 var m = dart.bind(obj, 'm'); 820 var m = dart.bind(obj, 'm');
815 checkType(m, dart.fnTypeFuzzy(core.Object, [core.int])); 821 checkType(m, dart.fnTypeFuzzy(core.Object, [core.int]));
816 checkType(m, dart.fnTypeFuzzy(core.int, [core.int]), false, true); 822 checkType(m, dart.fnTypeFuzzy(core.int, [core.int]), false, true);
817 }); 823 });
818 824
819 test('Object members', () => { 825 test('Object members', () => {
820 let nullHash = dart.hashCode(null); 826 let nullHash = dart.hashCode(null);
821 assert.equal(nullHash, 0); 827 assert.equal(nullHash, 0);
822 let nullString = dart.toString(null); 828 let nullString = dart.toString(null);
823 assert.equal(nullString, 'null'); 829 assert.equal(nullString, 'null');
824 830
825 let map = new Map(); 831 let map = Map.new();
826 let mapHash = dart.hashCode(map); 832 let mapHash = dart.hashCode(map);
827 checkType(mapHash, core.int); 833 checkType(mapHash, core.int);
828 assert.equal(mapHash, map.hashCode); 834 assert.equal(mapHash, map.hashCode);
829 835
830 let mapString = dart.toString(map); 836 let mapString = dart.toString(map);
831 assert.equal(mapString, map.toString()); 837 assert.equal(mapString, map.toString());
832 checkType(mapString, core.String); 838 checkType(mapString, core.String);
833 839
834 let str = "A string"; 840 let str = "A string";
835 let strHash = dart.hashCode(str); 841 let strHash = dart.hashCode(str);
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 fnTypeFuzzy(T, [Func$(R, S)]))); 1142 fnTypeFuzzy(T, [Func$(R, S)])));
1137 1143
1138 maybe(fnTypeFuzzy(int, [fnTypeFuzzy(int, [num])]), 1144 maybe(fnTypeFuzzy(int, [fnTypeFuzzy(int, [num])]),
1139 fnTypeFuzzy(num, [fnTypeFuzzy(int, [int])])); 1145 fnTypeFuzzy(num, [fnTypeFuzzy(int, [int])]));
1140 maybe(fnTypeFuzzy(int, [Func$(num, int)]), 1146 maybe(fnTypeFuzzy(int, [Func$(num, int)]),
1141 fnTypeFuzzy(num, [Func$(int, int)])); 1147 fnTypeFuzzy(num, [Func$(int, int)]));
1142 maybe(Func2$(num, int, int), Func2$(int, int, num)); 1148 maybe(Func2$(num, int, int), Func2$(int, int, num));
1143 }); 1149 });
1144 1150
1145 test('mixed types', () => { 1151 test('mixed types', () => {
1146 let AA$ = dart.generic((T) => class AA extends core.Object {}); 1152 let AA$ = dart.generic((T) => {
1153 class AA extends core.Object {}
1154 (AA.new = function() {}).prototype = AA.prototype;
1155 return AA;
1156 });
1147 1157
1148 always(int, dyn); 1158 always(int, dyn);
1149 maybe(dyn, int); 1159 maybe(dyn, int);
1150 1160
1151 never(fnTypeFuzzy(int, [int]), int); 1161 never(fnTypeFuzzy(int, [int]), int);
1152 1162
1153 never(int, fnTypeFuzzy(int, [int])); 1163 never(int, fnTypeFuzzy(int, [int]));
1154 1164
1155 always(AA$(int), AA$(dyn)); 1165 always(AA$(int), AA$(dyn));
1156 maybe(AA$(dyn), AA$(int)); 1166 maybe(AA$(dyn), AA$(int));
(...skipping 20 matching lines...) Expand all
1177 let Object = core.Object; 1187 let Object = core.Object;
1178 let String = core.String; 1188 let String = core.String;
1179 let int = core.int; 1189 let int = core.int;
1180 let dynamic = dart.dynamic; 1190 let dynamic = dart.dynamic;
1181 let bottom = dart.bottom; 1191 let bottom = dart.bottom;
1182 let Map = core.Map; 1192 let Map = core.Map;
1183 let Map$ = core.Map$; 1193 let Map$ = core.Map$;
1184 1194
1185 class A {} 1195 class A {}
1186 1196
1187 let AA$ = generic((T, U) => class AA extends core.Object {}); 1197 let AA$ = generic((T, U) => {
1198 class AA extends core.Object {}
1199 (AA.new = function() {}).prototype = AA.prototype;
1200 return AA;
1201 });
1188 let AA = AA$(); 1202 let AA = AA$();
1189 1203
1190 let Func2 = typedef('Func2', () => fnTypeFuzzy(dynamic, [dynamic, dynamic])) ; 1204 let Func2 = typedef('Func2', () => fnTypeFuzzy(dynamic, [dynamic, dynamic])) ;
1191 1205
1192 let FuncG$ = generic((T, U) => typedef('FuncG', () => fnTypeFuzzy(T, [T, U]) )) 1206 let FuncG$ = generic((T, U) => typedef('FuncG', () => fnTypeFuzzy(T, [T, U]) ))
1193 let FuncG = FuncG$(); 1207 let FuncG = FuncG$();
1194 1208
1195 test('base types', () => { 1209 test('base types', () => {
1196 assert.equal(Object, Object); 1210 assert.equal(Object, Object);
1197 assert.equal(String, String); 1211 assert.equal(String, String);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 1281
1268 assert.notEqual(fnTypeFuzzy(String, []), 1282 assert.notEqual(fnTypeFuzzy(String, []),
1269 fnTypeFuzzy(int, [])) 1283 fnTypeFuzzy(int, []))
1270 }); 1284 });
1271 }); 1285 });
1272 1286
1273 suite('primitives', function() { 1287 suite('primitives', function() {
1274 'use strict'; 1288 'use strict';
1275 1289
1276 test('fixed length list', () => { 1290 test('fixed length list', () => {
1277 let list = new core.List(10); 1291 let list = core.List.new(10);
1278 list[0] = 42; 1292 list[0] = 42;
1279 assert.throws(() => list.add(42)); 1293 assert.throws(() => list.add(42));
1280 }); 1294 });
1281 1295
1282 test('toString on ES Symbol', () => { 1296 test('toString on ES Symbol', () => {
1283 let sym = Symbol('_foobar'); 1297 let sym = Symbol('_foobar');
1284 assert.equal(dart.toString(sym), 'Symbol(_foobar)'); 1298 assert.equal(dart.toString(sym), 'Symbol(_foobar)');
1285 }); 1299 });
1286 }); 1300 });
1287 }); 1301 });
OLDNEW
« no previous file with comments | « pkg/dev_compiler/test/browser/language_tests.js ('k') | pkg/dev_compiler/test/codegen_expected/BenchmarkBase.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698