blob: 40b0eab9422cd688c37456d1e59846df0b00c392 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// 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})();