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

Side by Side Diff: test/mjsunit/es6/regress/regress-cr493566.js

Issue 1516843002: [proxy] fixing harmony/proxy.js tests and improving error messages + some drive-by fixes (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: enabling and fixing more tests Created 5 years 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
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 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 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-proxies 5 // Flags: --harmony-proxies --harmony-reflect
6 6
7 "use strict"; 7 "use strict";
8
9
10 var global = this; 8 var global = this;
11 9
12
13 (function TestGlobalReceiver() { 10 (function TestGlobalReceiver() {
14 class A { 11 class A {
15 s() { 12 s(value) {
16 super.bla = 10; 13 super.bla = value;
17 } 14 }
18 } 15 }
19 new A().s.call(global); 16 var a = new A();
17 a.s(9);
18 assertEquals(undefined, global.bla);
19 assertEquals(9, a.bla);
20
21 a = new A();
22 a.s.call(global, 10);
20 assertEquals(10, global.bla); 23 assertEquals(10, global.bla);
24 assertEquals(undefined, a.bla);
21 })(); 25 })();
22 26
23 27
24 (function TestProxyProto() { 28 (function TestProxyProto() {
25 var calls = 0; 29 var calls = 0;
26 var handler = { 30 var handler = {
27 getPropertyDescriptor: function(name) { 31 set(t, p, v, r) {
28 calls++; 32 calls++;
33 return Reflect.set(t, p, v, r);
34 },
35 getPropertyDescriptor(target, name) {
36 calls += 10;
29 return undefined; 37 return undefined;
30 } 38 }
31 }; 39 };
32
33 var target = {}; 40 var target = {};
34 var proxy = new Proxy(target, handler); 41 var proxy = new Proxy(target, handler);
35 var object = { 42 var object = {
36 __proto__: proxy, 43 __proto__: proxy,
37 setX(v) { 44 setX(v) {
38 super.x = v; 45 super.x = v;
39 }, 46 },
40 setSymbol(sym, v) { 47 setSymbol(sym, v) {
41 super[sym] = v; 48 super[sym] = v;
42 } 49 }
43 }; 50 };
44 51
45 object.setX(1); 52 object.setX(1);
53 assertEquals(1, object.x);
54 assertEquals(1, Object.getOwnPropertyDescriptor(object, 'x').value);
55 assertEquals(1, calls);
56
57 calls = 0;
58 object.setX.call(proxy, 2);
59 assertEquals(2, target.x);
46 assertEquals(1, Object.getOwnPropertyDescriptor(object, 'x').value); 60 assertEquals(1, Object.getOwnPropertyDescriptor(object, 'x').value);
47 assertEquals(1, calls); 61 assertEquals(1, calls);
48 62
49 var sym = Symbol(); 63 var sym = Symbol();
64 calls = 0;
50 object.setSymbol.call(global, sym, 2); 65 object.setSymbol.call(global, sym, 2);
51 assertEquals(2, Object.getOwnPropertyDescriptor(global, sym).value); 66 assertEquals(2, Object.getOwnPropertyDescriptor(global, sym).value);
52 // We currently do not invoke proxy traps for symbols 67 // We currently do not invoke proxy traps for symbols
53 assertEquals(1, calls); 68 assertEquals(1, calls);
54 })(); 69 })();
55 70
56 71
57 (function TestProxyReceiver() { 72 (function TestProxyReceiver() {
58 var object = { 73 var object = {
59 setY(v) { 74 setY(v) {
60 super.y = v; 75 super.y = v;
61 } 76 }
62 }; 77 };
63 78
64 var calls = 0; 79 var calls = 0;
80 var target = {target:1};
65 var handler = { 81 var handler = {
66 getPropertyDescriptor(name) { 82 getOwnPropertyDescriptor(t, name) {
67 assertUnreachable(); 83 calls++;
84 },
85 defineOwnProperty(t, name) {
86 calls += 10;
68 }, 87 },
69 set(receiver, name, value) { 88 set(receiver, name, value) {
70 calls++; 89 calls += 100;
71 assertEquals(proxy, receiver); 90 return true;
72 assertEquals('y', name);
73 assertEquals(3, value);
74 } 91 }
75 }; 92 };
93 var proxy = new Proxy(target, handler);
76 94
77 var proxy = new Proxy({}, handler); 95 assertEquals(undefined, object.y);
96 object.setY(10);
97 assertEquals(10, object.y);
98
99 // Change the receiver to the proxy, but the set is called on the global.
78 object.setY.call(proxy, 3); 100 object.setY.call(proxy, 3);
101 assertEquals(3, target.y);
Camillo Bruni 2015/12/10 20:22:14 this doesn't make any sense to me, especially sinc
79 assertEquals(1, calls); 102 assertEquals(1, calls);
80 })(); 103 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698