1 // Copyright (C) 2021 Alexey Shvayka. All rights reserved.
2 // This code is governed by the license found in the LICENSE file.
5 esid: sec-object.assign
7 [[Set]] to accessor property of frozen `target` succeeds.
9 SetIntegrityLevel ( O, level )
12 3. Let status be ? O.[[PreventExtensions]]().
15 a. Assert: level is frozen.
16 b. For each element k of keys, do
17 i. Let currentDesc be ? O.[[GetOwnProperty]](k).
18 ii. If currentDesc is not undefined, then
19 1. If IsAccessorDescriptor(currentDesc) is true, then
20 a. Let desc be the PropertyDescriptor { [[Configurable]]: false }.
22 3. Perform ? DefinePropertyOrThrow(O, k, desc).
25 Object.assign ( target, ...sources )
28 3. For each element nextSource of sources, do
29 a. If nextSource is neither undefined nor null, then
31 iii. For each element nextKey of keys, do
32 1. Let desc be ? from.[[GetOwnProperty]](nextKey).
33 2. If desc is not undefined and desc.[[Enumerable]] is true, then
35 b. Perform ? Set(to, nextKey, propValue, true).
37 OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
40 7. Perform ? Call(setter, Receiver, « V »).
47 set foo(val) { value1 = val; },
50 Object.freeze(target1);
51 Object.assign(target1, { foo: 2 });
52 assert.sameValue(value1, 2);
57 var target2 = Object.freeze({
58 set [sym](val) { value2 = val; },
61 Object.freeze(target2);
62 Object.assign(target2, { [sym]: 2 });
63 assert.sameValue(value2, 2);