| // 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: --allow-natives-syntax |
| |
| load('test/mjsunit/test-async.js'); |
| |
| async function f(assert) { |
| try { |
| module_namespace_obj = await import('modules-skip-1.mjs'); |
| } 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"); |