Index: test/mjsunit/es6/regress/regress-cr493566.js |
diff --git a/test/mjsunit/es6/regress/regress-cr493566.js b/test/mjsunit/es6/regress/regress-cr493566.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9bb313ffbef5339ccadaedd3dfdbff4d3bd8eb73 |
--- /dev/null |
+++ b/test/mjsunit/es6/regress/regress-cr493566.js |
@@ -0,0 +1,80 @@ |
+// Copyright 2015 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Flags: --harmony-proxies |
+ |
+"use strict"; |
+ |
+ |
+var global = this; |
+ |
+ |
+(function TestGlobalReceiver() { |
+ class A { |
+ s() { |
+ super.bla = 10; |
+ } |
+ } |
+ new A().s.call(global); |
+ assertEquals(10, global.bla); |
+})(); |
+ |
+ |
+(function TestProxyProto() { |
+ var calls = 0; |
+ var handler = { |
+ getPropertyDescriptor: function(name) { |
+ calls++; |
+ return undefined; |
+ } |
+ }; |
+ |
+ var proto = {}; |
+ var proxy = Proxy.create(handler, proto); |
+ var object = { |
+ __proto__: proxy, |
+ setX(v) { |
+ super.x = v; |
+ }, |
+ setSymbol(sym, v) { |
+ super[sym] = v; |
+ } |
+ }; |
+ |
+ object.setX(1); |
+ assertEquals(1, Object.getOwnPropertyDescriptor(object, 'x').value); |
+ assertEquals(1, calls); |
+ |
+ var sym = Symbol(); |
+ object.setSymbol.call(global, sym, 2); |
+ assertEquals(2, Object.getOwnPropertyDescriptor(global, sym).value); |
+ // We currently do not invoke proxy traps for symbols |
+ assertEquals(1, calls); |
+})(); |
+ |
+ |
+(function TestProxyReceiver() { |
+ var object = { |
+ setY(v) { |
+ super.y = v; |
+ } |
+ }; |
+ |
+ var calls = 0; |
+ var handler = { |
+ getPropertyDescriptor(name) { |
+ assertUnreachable(); |
+ }, |
+ set(receiver, name, value) { |
+ calls++; |
+ assertEquals(proxy, receiver); |
+ assertEquals('y', name); |
+ assertEquals(3, value); |
+ } |
+ }; |
+ |
+ var proxy = Proxy.create(handler); |
+ object.setY.call(proxy, 3); |
+ assertEquals(1, calls); |
+})(); |