mirror of https://github.com/tc39/test262.git
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-object.seal
|
|
description: >
|
|
Object.seal WeakSet
|
|
info: |
|
|
If Type(O) is not Object, return O.
|
|
Let status be ? SetIntegrityLevel(O, sealed).
|
|
|
|
SetIntegrityLevel ( O, level )
|
|
|
|
Assert: Type(O) is Object.
|
|
Assert: level is either sealed or frozen.
|
|
Let status be ? O.[[PreventExtensions]]().
|
|
If status is false, return false.
|
|
Let keys be ? O.[[OwnPropertyKeys]]().
|
|
If level is sealed, then
|
|
For each element k of keys, do
|
|
Perform ? DefinePropertyOrThrow(O, k, PropertyDescriptor { [[Configurable]]: false }).
|
|
Else,
|
|
Assert: level is frozen.
|
|
For each element k of keys, do
|
|
Let currentDesc be ? O.[[GetOwnProperty]](k).
|
|
If currentDesc is not undefined, then
|
|
If IsAccessorDescriptor(currentDesc) is true, then
|
|
Let desc be the PropertyDescriptor { [[Configurable]]: false }.
|
|
Else,
|
|
Let desc be the PropertyDescriptor { [[Configurable]]: false, [[Writable]]: false }.
|
|
Perform ? DefinePropertyOrThrow(O, k, desc).
|
|
Return true.
|
|
|
|
---*/
|
|
|
|
Object.seal(new WeakSet());
|