tor-browser

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

source-object-length-set-elem-prop-non-writable.js (1070B)


      1 // Copyright (C) 2020 Alexey Shvayka. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-array.from
      6 description: >
      7  Non-writable properties are overwritten by CreateDataProperty.
      8  (result object's "0" is non-writable, items is not iterable)
      9 info: |
     10  Array.from ( items [ , mapfn [ , thisArg ] ] )
     11 
     12  [...]
     13  4. Let usingIterator be ? GetMethod(items, @@iterator).
     14  5. If usingIterator is not undefined, then
     15    [...]
     16  6. NOTE: items is not an Iterable so assume it is an array-like object.
     17  [...]
     18  12. Repeat, while k < len
     19    [...]
     20    e. Perform ? CreateDataPropertyOrThrow(A, Pk, mappedValue).
     21  [...]
     22 includes: [propertyHelper.js]
     23 ---*/
     24 
     25 var items = {
     26  "0": 2,
     27  length: 1,
     28 };
     29 
     30 var A = function(_length) {
     31  Object.defineProperty(this, "0", {
     32    value: 1,
     33    writable: false,
     34    enumerable: false,
     35    configurable: true,
     36  });
     37 };
     38 
     39 var res = Array.from.call(A, items);
     40 
     41 verifyProperty(res, "0", {
     42  value: 2,
     43  writable: true,
     44  enumerable: true,
     45  configurable: true,
     46 });
     47 
     48 reportCompare(0, 0);