summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/harmony/private-fields-special-object.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/harmony/private-fields-special-object.js')
-rw-r--r--deps/v8/test/mjsunit/harmony/private-fields-special-object.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/harmony/private-fields-special-object.js b/deps/v8/test/mjsunit/harmony/private-fields-special-object.js
new file mode 100644
index 0000000000..309143d904
--- /dev/null
+++ b/deps/v8/test/mjsunit/harmony/private-fields-special-object.js
@@ -0,0 +1,49 @@
+// Copyright 2018 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-private-fields --allow-natives-syntax
+
+async function f(assert) {
+ try {
+ module_namespace_obj = await import('modules-skip-1.js');
+ } catch(e) {
+ %AbortJS(e);
+ }
+
+ class A {
+ constructor(arg) {
+ return arg;
+ }
+ }
+
+ class X extends A {
+ #x = 1;
+
+ constructor(arg) {
+ super(arg);
+ }
+
+ getX(arg) {
+ return arg.#x;
+ }
+
+ setX(arg, val) { arg.#x = val; }
+ }
+
+ let x = new X(module_namespace_obj);
+
+ assert.equals(1, X.prototype.getX(module_namespace_obj));
+ assert.equals(1, X.prototype.getX(module_namespace_obj));
+ assert.equals(1, X.prototype.getX(module_namespace_obj));
+
+ X.prototype.setX(module_namespace_obj, 2);
+ X.prototype.setX(module_namespace_obj, 3);
+ X.prototype.setX(module_namespace_obj, 4);
+}
+
+testAsync(assert => {
+ assert.plan(3);
+
+ f(assert).catch(assert.unreachable);
+}, "private-fields-special-object");