Home | History | Annotate | Download | only in es6
      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
      3 // found in the LICENSE file.
      4 
      5 // Flags: --harmony-sloppy
      6 // Flags: --allow-natives-syntax
      7 
      8 
      9 function ID(x) {
     10   return x;
     11 }
     12 
     13 
     14 (function TestComputedMethodSuper() {
     15   class Base {
     16     m() {
     17       return ' base m';
     18     }
     19   }
     20   class Derived extends Base {
     21     ['a']() { return 'a' + super.m(); }
     22     [ID('b')]() { return 'b' + super.m(); }
     23     [0]() { return '0' + super.m(); }
     24     [ID(1)]() { return '1' + super.m(); }
     25   }
     26 
     27   assertSame(Derived.prototype, Derived.prototype.a[%HomeObjectSymbol()]);
     28 
     29   assertEquals('a base m', new Derived().a());
     30   assertEquals('b base m', new Derived().b());
     31   assertEquals('0 base m', new Derived()[0]());
     32   assertEquals('1 base m', new Derived()[1]());
     33 })();
     34 
     35 
     36 (function TestComputedGetterSuper() {
     37   class Base {
     38     m() {
     39       return ' base m';
     40     }
     41   }
     42   class Derived extends Base {
     43     get ['a']() { return 'a' + super.m(); }
     44     get [ID('b')]() { return 'b' + super.m(); }
     45     get [0]() { return '0' + super.m(); }
     46     get [ID(1)]() { return '1' + super.m(); }
     47   }
     48   assertEquals('a base m', new Derived().a);
     49   assertEquals('b base m', new Derived().b);
     50   assertEquals('0 base m', new Derived()[0]);
     51   assertEquals('1 base m', new Derived()[1]);
     52 })();
     53 
     54 
     55 (function TestComputedSetterSuper() {
     56   var value;
     57   class Base {
     58     m(name, v) {
     59       value = name + ' ' + v;
     60     }
     61   }
     62   class Derived extends Base {
     63     set ['a'](v) { super.m('a', v); }
     64     set [ID('b')](v) { super.m('b', v); }
     65     set [0](v) { super.m('0', v); }
     66     set [ID(1)](v) { super.m('1', v); }
     67   }
     68   new Derived().a = 2;
     69   assertEquals('a 2', value);
     70   new Derived().b = 3;
     71   assertEquals('b 3', value);
     72   new Derived()[0] = 4;
     73   assertEquals('0 4', value);
     74   new Derived()[1] = 5;
     75   assertEquals('1 5', value);
     76 })();
     77