tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

target-is-sealed-existing-accessor-property.js (1343B)


      1 // Copyright (C) 2021 Alexey Shvayka. All rights reserved.
      2 // This code is governed by the license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-object.assign
      6 description: >
      7  [[Set]] to existing accessor property of sealed `target` is successful.
      8 info: |
      9  SetIntegrityLevel ( O, level )
     10 
     11  [...]
     12  3. Let status be ? O.[[PreventExtensions]]().
     13  [...]
     14 
     15  OrdinaryPreventExtensions ( O )
     16 
     17  1. Set O.[[Extensible]] to false.
     18 
     19  Object.assign ( target, ...sources )
     20 
     21  [...]
     22  3. For each element nextSource of sources, do
     23    a. If nextSource is neither undefined nor null, then
     24      [...]
     25      iii. For each element nextKey of keys, do
     26        1. Let desc be ? from.[[GetOwnProperty]](nextKey).
     27        2. If desc is not undefined and desc.[[Enumerable]] is true, then
     28          [...]
     29          b. Perform ? Set(to, nextKey, propValue, true).
     30 
     31  OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
     32 
     33  [...]
     34  7. Perform ? Call(setter, Receiver, « V »).
     35  8. Return true.
     36 ---*/
     37 
     38 var value1 = 1;
     39 var target1 = Object.seal({
     40  set foo(val) { value1 = val; },
     41 });
     42 
     43 Object.assign(target1, { foo: 2 });
     44 assert.sameValue(value1, 2);
     45 
     46 
     47 var sym = Symbol();
     48 var value2 = 1;
     49 var target2 = {
     50  set [sym](val) { value2 = val; },
     51 };
     52 
     53 Object.seal(target2);
     54 Object.assign(target2, { [sym]: 2 });
     55 assert.sameValue(value2, 2);
     56 
     57 reportCompare(0, 0);