Home | History | Annotate | Download | only in es6
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 
      6 (function testConstructClassStrict() {
      7   "use strict";
      8   class Base {
      9     constructor(...args) {
     10       this.baseArgs = args;
     11     }
     12     method() { return this.baseArgs; }
     13   }
     14 
     15   class Child extends Base {
     16     constructor(...args) {
     17       super(...args);
     18       this.childArgs = args;
     19     }
     20   }
     21 
     22   class Child2 extends Base {
     23     constructor(...args) {
     24       super("extra", ...args);
     25       this.childArgs = args;
     26     }
     27   }
     28 
     29   var c = new Base(...[1, 2, 3]);
     30   assertInstanceof(c, Base);
     31   assertEquals([1, 2, 3], c.method());
     32   assertEquals([1, 2, 3], c.baseArgs);
     33 
     34   c = new Child(...[1, 2, 3]);
     35   assertInstanceof(c, Child);
     36   assertInstanceof(c, Base);
     37   assertEquals([1, 2, 3], c.method());
     38   assertEquals([1, 2, 3], c.baseArgs);
     39   assertEquals([1, 2, 3], c.childArgs);
     40 
     41   c = new Child2(...[1, 2, 3]);
     42   assertInstanceof(c, Child2);
     43   assertInstanceof(c, Base);
     44   assertEquals(["extra", 1, 2, 3], c.method());
     45   assertEquals(["extra", 1, 2, 3], c.baseArgs);
     46   assertEquals([1, 2, 3], c.childArgs);
     47 })();
     48 
     49 
     50 (function testConstructSloppy() {
     51   class Base {
     52     constructor(...args) {
     53       this.baseArgs = args;
     54     }
     55     method() { return this.baseArgs; }
     56   }
     57 
     58   class Child extends Base {
     59     constructor(...args) {
     60       super(...args);
     61       this.childArgs = args;
     62     }
     63   }
     64 
     65   class Child2 extends Base {
     66     constructor(...args) {
     67       super("extra", ...args);
     68       this.childArgs = args;
     69     }
     70   }
     71 
     72   var c = new Base(...[1, 2, 3]);
     73   assertInstanceof(c, Base);
     74   assertEquals([1, 2, 3], c.method());
     75   assertEquals([1, 2, 3], c.baseArgs);
     76 
     77   c = new Child(...[1, 2, 3]);
     78   assertInstanceof(c, Child);
     79   assertInstanceof(c, Base);
     80   assertEquals([1, 2, 3], c.method());
     81   assertEquals([1, 2, 3], c.baseArgs);
     82   assertEquals([1, 2, 3], c.childArgs);
     83 
     84   c = new Child2(...[1, 2, 3]);
     85   assertInstanceof(c, Child2);
     86   assertInstanceof(c, Base);
     87   assertEquals(["extra", 1, 2, 3], c.method());
     88   assertEquals(["extra", 1, 2, 3], c.baseArgs);
     89   assertEquals([1, 2, 3], c.childArgs);
     90 })();
     91