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: --allow-natives-syntax 6 7 8function ID(x) { 9 return x; 10} 11 12 13(function TestComputedMethodSuper() { 14 var proto = { 15 m() { 16 return ' proto m'; 17 } 18 }; 19 var object = { 20 __proto__: proto, 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(object, object.a[%HomeObjectSymbol()]); 28 29 assertEquals('a proto m', object.a()); 30 assertEquals('b proto m', object.b()); 31 assertEquals('0 proto m', object[0]()); 32 assertEquals('1 proto m', object[1]()); 33})(); 34 35 36(function TestComputedGetterSuper() { 37 var proto = { 38 m() { 39 return ' proto m'; 40 } 41 }; 42 var object = { 43 __proto__: proto, 44 get ['a']() { return 'a' + super.m(); }, 45 get [ID('b')]() { return 'b' + super.m(); }, 46 get [0]() { return '0' + super.m(); }, 47 get [ID(1)]() { return '1' + super.m(); }, 48 }; 49 assertEquals('a proto m', object.a); 50 assertEquals('b proto m', object.b); 51 assertEquals('0 proto m', object[0]); 52 assertEquals('1 proto m', object[1]); 53})(); 54 55 56(function TestComputedSetterSuper() { 57 var value; 58 var proto = { 59 m(name, v) { 60 value = name + ' ' + v; 61 } 62 }; 63 var object = { 64 __proto__: proto, 65 set ['a'](v) { super.m('a', v); }, 66 set [ID('b')](v) { super.m('b', v); }, 67 set [0](v) { super.m('0', v); }, 68 set [ID(1)](v) { super.m('1', v); }, 69 }; 70 object.a = 2; 71 assertEquals('a 2', value); 72 object.b = 3; 73 assertEquals('b 3', value); 74 object[0] = 4; 75 assertEquals('0 4', value); 76 object[1] = 5; 77 assertEquals('1 5', value); 78})(); 79