Bug 1892041 - Part 2: Update test262. r=spidermonkey-reviewers,dminor
[gecko.git] / js / src / tests / test262 / built-ins / Object / assign / target-is-frozen-accessor-property-set-succeeds.js
blob36d3065b26836403168780ecb9885acd521d95e9
1 // Copyright (C) 2021 Alexey Shvayka. All rights reserved.
2 // This code is governed by the license found in the LICENSE file.
4 /*---
5 esid: sec-object.assign
6 description: >
7   [[Set]] to accessor property of frozen `target` succeeds.
8 info: |
9   SetIntegrityLevel ( O, level )
11   [...]
12   3. Let status be ? O.[[PreventExtensions]]().
13   [...]
14   7. Else,
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 }.
21         [...]
22         3. Perform ? DefinePropertyOrThrow(O, k, desc).
23   8. Return true.
25   Object.assign ( target, ...sources )
27   [...]
28   3. For each element nextSource of sources, do
29     a. If nextSource is neither undefined nor null, then
30       [...]
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
34           [...]
35           b. Perform ? Set(to, nextKey, propValue, true).
37   OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
39   [...]
40   7. Perform ? Call(setter, Receiver, « V »).
41   8. Return true.
42 features: [Symbol]
43 ---*/
45 var value1 = 1;
46 var target1 = {
47   set foo(val) { value1 = val; },
50 Object.freeze(target1);
51 Object.assign(target1, { foo: 2 });
52 assert.sameValue(value1, 2);
55 var sym = Symbol();
56 var value2 = 1;
57 var target2 = Object.freeze({
58   set [sym](val) { value2 = val; },
59 });
61 Object.freeze(target2);
62 Object.assign(target2, { [sym]: 2 });
63 assert.sameValue(value2, 2);
65 reportCompare(0, 0);