diff --git a/document/js-api/index.bs b/document/js-api/index.bs index f20b0cf2ec..332ef088c2 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -1600,7 +1600,7 @@ The internal methods of an [=Exported GC Object=] use the following implementati
The \[[PreventExtensions]] internal method of an Exported GC Object O takes no arguments and returns a boolean. It performs the following steps when called: - 1. Return false. + 1. Return true.
diff --git a/proposals/gc/MVP-JS.md b/proposals/gc/MVP-JS.md index 455465bb55..304a7d2846 100644 --- a/proposals/gc/MVP-JS.md +++ b/proposals/gc/MVP-JS.md @@ -25,7 +25,7 @@ objects supports the following JS operations: - `GetPrototypeOf`: returns `null`. - `SetPrototypeOf`: returns `false` (and does not set a prototype). - `IsExtensible`: returns `false`. - - `PreventExtensions`: returns `false`. + - `PreventExtensions`: returns `true`. - `GetOwnProperty`: returns `undefined`. - `DefineOwnProperty`: returns `false`. - `HasProperty`: returns `false`. diff --git a/test/js-api/gc/exported-object.tentative.any.js b/test/js-api/gc/exported-object.tentative.any.js index b572f14006..c7bf0fc452 100644 --- a/test/js-api/gc/exported-object.tentative.any.js +++ b/test/js-api/gc/exported-object.tentative.any.js @@ -113,17 +113,30 @@ test(() => { test(() => { const struct = functions.makeStruct(); const array = functions.makeArray(); - assert_throws_js(TypeError, () => Object.preventExtensions(struct)); - assert_throws_js(TypeError, () => Object.preventExtensions(array)); + assert_true(Reflect.preventExtensions(struct)); + assert_true(Reflect.preventExtensions(array)); + assert_equals(Object.preventExtensions(struct), struct); + assert_equals(Object.preventExtensions(array), array); }, "preventExtensions"); test(() => { const struct = functions.makeStruct(); const array = functions.makeArray(); - assert_throws_js(TypeError, () => Object.seal(struct)); - assert_throws_js(TypeError, () => Object.seal(array)); + assert_true(Object.isSealed(struct)); + assert_true(Object.isSealed(array)); + assert_equals(Object.seal(struct), struct); + assert_equals(Object.seal(array), array); }, "sealing"); +test(() => { + const struct = functions.makeStruct(); + const array = functions.makeArray(); + assert_true(Object.isFrozen(struct)); + assert_true(Object.isFrozen(array)); + assert_equals(Object.freeze(struct), struct); + assert_equals(Object.freeze(array), array); +}, "freezing"); + test(() => { const struct = functions.makeStruct(); const array = functions.makeArray();