diff options
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.js | 49 |
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"); |