2021-07-20 22:00:30 +02:00
|
|
|
// Copyright (C) 2021 Leo Balter. All rights reserved.
|
|
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
|
|
|
|
/*---
|
2021-09-02 17:07:19 +02:00
|
|
|
esid: sec-shadowrealm
|
2021-07-20 22:00:30 +02:00
|
|
|
description: >
|
|
|
|
The new instance is extensible
|
|
|
|
info: |
|
2021-09-02 17:07:19 +02:00
|
|
|
ShadowRealm ( )
|
2021-07-20 22:00:30 +02:00
|
|
|
|
|
|
|
...
|
2021-09-02 17:07:19 +02:00
|
|
|
2. Let O be ? OrdinaryCreateFromConstructor(NewTarget, "%ShadowRealm.prototype%",
|
|
|
|
« [[ShadowRealm]], [[ExecutionContext]] »).
|
2021-07-20 22:00:30 +02:00
|
|
|
...
|
|
|
|
13. Return O.
|
|
|
|
|
|
|
|
OrdinaryCreateFromConstructor creates a new ordinary objects including the
|
|
|
|
internal slots [[Prototype]] and [[Extensible]]. The latter will have its
|
|
|
|
value set to true.
|
|
|
|
includes: [propertyHelper.js]
|
2021-09-02 16:46:33 +02:00
|
|
|
features: [ShadowRealm]
|
2021-07-20 22:00:30 +02:00
|
|
|
---*/
|
|
|
|
|
2021-09-02 17:07:19 +02:00
|
|
|
const realm = new ShadowRealm();
|
2021-07-20 22:00:30 +02:00
|
|
|
|
|
|
|
assert(Object.isExtensible(realm));
|
|
|
|
|
2021-09-02 17:12:03 +02:00
|
|
|
Object.defineProperty(realm, 'foo', { configurable: true });
|
2021-07-20 22:00:30 +02:00
|
|
|
assert(realm.hasOwnProperty('foo'), 'confirms extensibility adding a new property');
|
|
|
|
|
|
|
|
Object.defineProperty(realm, 'foo', {
|
|
|
|
value: 'bar',
|
|
|
|
writable: true,
|
|
|
|
configurable: true,
|
|
|
|
enumerable: false,
|
|
|
|
});
|
|
|
|
|
|
|
|
verifyProperty(realm, 'foo', {
|
|
|
|
value: 'bar',
|
|
|
|
writable: true,
|
|
|
|
configurable: true,
|
|
|
|
enumerable: false,
|
|
|
|
});
|