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);