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

Side by Side Diff: test/mjsunit/harmony/classes.js

Issue 700523003: Classes: Partial fix for constructor not calling super (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: remove todo Created 6 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « src/runtime/runtime-classes.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Flags: --harmony-classes 5 // Flags: --harmony-classes
6 6
7 (function TestBasics() { 7 (function TestBasics() {
8 var C = class C {} 8 var C = class C {}
9 assertEquals(typeof C, 'function'); 9 assertEquals(typeof C, 'function');
10 assertEquals(C.__proto__, Function.prototype); 10 assertEquals(C.__proto__, Function.prototype);
11 assertEquals(Object.prototype, Object.getPrototypeOf(C.prototype)); 11 assertEquals(Object.prototype, Object.getPrototypeOf(C.prototype));
12 assertEquals(Function.prototype, Object.getPrototypeOf(C)); 12 assertEquals(Function.prototype, Object.getPrototypeOf(C));
13 assertEquals('C', C.name); 13 assertEquals('C', C.name);
14 14
15 class D {} 15 class D {}
16 assertEquals(typeof D, 'function'); 16 assertEquals(typeof D, 'function');
17 assertEquals(D.__proto__, Function.prototype); 17 assertEquals(D.__proto__, Function.prototype);
18 assertEquals(Object.prototype, Object.getPrototypeOf(D.prototype)); 18 assertEquals(Object.prototype, Object.getPrototypeOf(D.prototype));
19 assertEquals(Function.prototype, Object.getPrototypeOf(D)); 19 assertEquals(Function.prototype, Object.getPrototypeOf(D));
20 assertEquals('D', D.name); 20 assertEquals('D', D.name);
21 21
22 class D2 { constructor() {} }
23 assertEquals('D2', D2.name);
24
25 // TODO(arv): The logic for the name of anonymous functions in ES6 requires
26 // the below to be 'E';
22 var E = class {} 27 var E = class {}
23 assertEquals('', E.name); 28 assertEquals('', E.name); // Should be 'E'.
29
30 var F = class { constructor() {} };
31 assertEquals('', F.name); // Should be 'F'.
24 })(); 32 })();
25 33
26 34
27 (function TestBasicsExtends() { 35 (function TestBasicsExtends() {
28 class C extends null {} 36 class C extends null {}
29 assertEquals(typeof C, 'function'); 37 assertEquals(typeof C, 'function');
30 assertEquals(C.__proto__, Function.prototype); 38 assertEquals(C.__proto__, Function.prototype);
31 assertEquals(null, Object.getPrototypeOf(C.prototype)); 39 assertEquals(null, Object.getPrototypeOf(C.prototype));
32 40
33 class D extends C {} 41 class D extends C {}
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 static get 5() { return super[5]; } 590 static get 5() { return super[5]; }
583 } 591 }
584 592
585 assertEquals(1, new C()[1]()); 593 assertEquals(1, new C()[1]());
586 assertEquals(2, new C()[2]); 594 assertEquals(2, new C()[2]);
587 assertEquals(4, C[4]()); 595 assertEquals(4, C[4]());
588 assertEquals(5, C[5]); 596 assertEquals(5, C[5]);
589 })(); 597 })();
590 598
591 599
600 (function TestDefaultConstructorNoCrash() {
601 // Regression test for https://code.google.com/p/v8/issues/detail?id=3661
602 class C {}
603 assertEquals(undefined, C());
604 assertEquals(undefined, C(1));
605 assertTrue(new C() instanceof C);
606 assertTrue(new C(1) instanceof C);
607 })();
608
609
610 (function TestDefaultConstructor() {
611 var calls = 0;
612 class Base {
613 constructor() {
614 calls++;
615 }
616 }
617 class Derived extends Base {}
618 var object = new Derived;
619 assertEquals(1, calls);
620
621 calls = 0;
622 Derived();
623 assertEquals(1, calls);
624 })();
625
626
592 /* TODO(arv): Implement 627 /* TODO(arv): Implement
593 (function TestNameBindingInConstructor() { 628 (function TestNameBindingInConstructor() {
594 class C { 629 class C {
595 constructor() { 630 constructor() {
596 assertThrows(function() { 631 assertThrows(function() {
597 C = 42; 632 C = 42;
598 }, ReferenceError); 633 }, ReferenceError);
599 } 634 }
600 } 635 }
601 new C(); 636 new C();
602 })(); 637 })();
603 */ 638 */
OLDNEW
« no previous file with comments | « src/runtime/runtime-classes.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698