Name Description Size
basic-longest.js --- esid: sec-iterator.zipkeyed description: > Basic Iterator.zipKeyed test with "longest" mode. includes: [compareArray.js, propertyHelper.js, iteratorZipUtils.js] features: [joint-iteration] --- 2953
basic-shortest.js --- esid: sec-iterator.zipkeyed description: > Basic Iterator.zipkeyed test with "shortest" mode. includes: [compareArray.js, propertyHelper.js, iteratorZipUtils.js] features: [joint-iteration] --- 946
basic-strict.js --- esid: sec-iterator.zipkeyed description: > Basic Iterator.zipkeyed test with "strict" mode. includes: [compareArray.js, propertyHelper.js, iteratorZipUtils.js] features: [joint-iteration] --- 1002
browser.js 0
is-function.js --- esid: sec-iterator.zipkeyed description: > Iterator.zipKeyed is a built-in function features: [joint-iteration] --- 401
iterables-containing-string-objects.js --- esid: sec-iterator.zipKeyed description: > Accepts String objects as inputs. includes: [compareArray.js] features: [joint-iteration] --- 698
iterables-iteration-after-reading-options.js --- esid: sec-iterator.zipkeyed description: > Perform [[OwnPropertyKeys]] on the "iterables" argument after reading all properties. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 3. Let mode be ? Get(options, "mode"). ... 7. If mode is "longest", then a. Set paddingOption to ? Get(options, "padding"). ... 10. Let allKeys be ? iterables.[[OwnPropertyKeys]](). ... includes: [proxyTrapsHelper.js, compareArray.js] features: [joint-iteration] --- 1442
iterables-iteration-deleted.js --- esid: sec-iterator.zipkeyed description: > Deleted properties are skipped in "iterables" iteration. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 10. Let allKeys be ? iterables.[[OwnPropertyKeys]](). 11. Let keys be a new empty List. 12. For each element key of allKeys, do a. Let desc be Completion(iterables.[[GetOwnProperty]](key)). ... c. If desc is not undefined and desc.[[Enumerable]] is true, then ... includes: [compareArray.js] features: [joint-iteration] --- 1095
iterables-iteration-enumerable.js --- esid: sec-iterator.zipkeyed description: > Non-enumerable properties are skipped in "iterables" iteration. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 10. Let allKeys be ? iterables.[[OwnPropertyKeys]](). 11. Let keys be a new empty List. 12. For each element key of allKeys, do a. Let desc be Completion(iterables.[[GetOwnProperty]](key)). ... c. If desc is not undefined and desc.[[Enumerable]] is true, then ... includes: [compareArray.js] features: [joint-iteration] --- 1900
iterables-iteration-get-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completions during iterables iteration. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 12. For each element key of allKeys, do ... 3. If desc is not undefined and desc.[[Enumerable]] is true, then i. Let value be Completion(Get(iterables, key)). ii. IfAbruptCloseIterators(value, iters). ... IfAbruptCloseIterators ( value, iteratorRecords ) 1. Assert: value is a Completion Record. 2. If value is an abrupt completion, return ? IteratorCloseAll(iteratorRecords, value). 3. Else, set value to value.[[Value]]. IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3568
iterables-iteration-get-iterator-flattenable-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completions during iterables iteration. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 12. For each element key of allKeys, do ... c. If desc is not undefined and desc.[[Enumerable]] is true, then ... iii. If value is not undefined, then ... 2. Let iter be Completion(GetIteratorFlattenable(value, reject-strings)). 3. IfAbruptCloseIterators(iter, iters). ... GetIteratorFlattenable ( obj, primitiveHandling ) 1. If obj is not an Object, then a. If primitiveHandling is reject-primitives, throw a TypeError exception. b. Assert: primitiveHandling is iterate-string-primitives. c. If obj is not a String, throw a TypeError exception. 2. Let method be ? GetMethod(obj, %Symbol.iterator%). 3. If method is undefined, then a. Let iterator be obj. 4. Else, a. Let iterator be ? Call(method, obj). 5. If iterator is not an Object, throw a TypeError exception. 6. Return ? GetIteratorDirect(iterator). IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 4269
iterables-iteration-get-own-property-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completions during iterables iteration. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 12. For each element key of allKeys, do a. Let desc be Completion(iterables.[[GetOwnProperty]](key)). b. IfAbruptCloseIterators(desc, iters). ... IfAbruptCloseIterators ( value, iteratorRecords ) 1. Assert: value is a Completion Record. 2. If value is an abrupt completion, return ? IteratorCloseAll(iteratorRecords, value). 3. Else, set value to value.[[Value]]. IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 2954
iterables-iteration-inherited.js --- esid: sec-iterator.zipkeyed description: > Inherited properties are skipped in "iterables" iteration. includes: [compareArray.js] features: [joint-iteration] --- 708
iterables-iteration-symbol-key.js --- esid: sec-iterator.zipkeyed description: > Symbol properties are used during "iterables" iteration. includes: [compareArray.js] features: [joint-iteration] --- 681
iterables-iteration-undefined.js --- esid: sec-iterator.zipkeyed description: > undefined-valued properties are skipped in "iterables" iteration. includes: [compareArray.js] features: [joint-iteration] --- 605
iterables-iteration.js --- esid: sec-iterator.zipkeyed description: > Perform iteration of the "iterables" argument. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 10. Let allKeys be ? iterables.[[OwnPropertyKeys]](). 11. Let keys be a new empty List. 12. For each element key of allKeys, do a. Let desc be Completion(iterables.[[GetOwnProperty]](key)). ... c. If desc is not undefined and desc.[[Enumerable]] is true, then i. Let value be Completion(Get(iterables, key)). ... iii. If value is not undefined, then 1. Append key to keys. 2. Let iter be Completion(GetIteratorFlattenable(value, reject-strings)). ... 4. Append iter to iters. ... includes: [proxyTrapsHelper.js, compareArray.js] features: [joint-iteration] --- 3237
iterables-primitive.js --- esid: sec-iterator.zipkeyed description: > Throws a TypeError when the "iterables" argument is not an object. info: | Iterator.zipKeyed ( iterables [ , options ] ) 1. If iterables is not an Object, throw a TypeError exception. ... features: [joint-iteration] --- 1140
iterator-zip-iteration-iterator-close-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completion from IteratorStep in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... v. Let completion be Completion(Yield(results)). vi. If completion is an abrupt completion, then 1. Return ? IteratorCloseAll(openIters, completion). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3219
iterator-zip-iteration-iterator-step-value-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completion from IteratorStepValue in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... iii. For each integer i such that 0 ≤ i < iterCount, in ascending order, do ... 3. Else, a. Let result be Completion(IteratorStepValue(iter)). b. If result is an abrupt completion, then i. Remove iter from openIters. ii. Return ? IteratorCloseAll(openIters, result). ... d. If result is done, then i. Remove iter from openIters. ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3951
iterator-zip-iteration-longest-iterator-close-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completion from IteratorStep in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... v. Let completion be Completion(Yield(results)). vi. If completion is an abrupt completion, then 1. Return ? IteratorCloseAll(openIters, completion). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3426
iterator-zip-iteration-shortest-iterator-close-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completion from IteratorCloseAll in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... iii. For each integer i such that 0 ≤ i < iterCount, in ascending order, do ... 3. Else, ... d. If result is done, then i. Remove iter from openIters. ii. If mode is "shortest", then i. Return ? IteratorCloseAll(openIters, ReturnCompletion(undefined)). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3528
iterator-zip-iteration-strict-iterator-close-i-is-not-zero-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completion from IteratorCloseAll in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... iii. For each integer i such that 0 ≤ i < iterCount, in ascending order, do ... 3. Else, ... d. If result is done, then i. Remove iter from openIters. ... iii. Else if mode is "strict", then i. If i ≠ 0, then i. Return ? IteratorCloseAll(openIters, ThrowCompletion(a newly created TypeError object)). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3170
iterator-zip-iteration-strict-iterator-close-i-is-zero-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completion from IteratorCloseAll in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... iii. For each integer i such that 0 ≤ i < iterCount, in ascending order, do ... 3. Else, ... d. If result is done, then i. Remove iter from openIters. ... iii. Else if mode is "strict", then ... ii. For each integer k such that 1 ≤ k < iterCount, in ascending order, do ... iv. Else, i. Return ? IteratorCloseAll(openIters, ThrowCompletion(a newly created TypeError object)). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3584
iterator-zip-iteration-strict-iterator-step-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Handle abrupt completion from IteratorStep in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... iii. For each integer i such that 0 ≤ i < iterCount, in ascending order, do ... 3. Else, ... d. If result is done, then i. Remove iter from openIters. ... iii. Else if mode is "strict", then ... ii. For each integer k such that 1 ≤ k < iterCount, in ascending order, do ... ii. Let open be Completion(IteratorStep(iters[k])). iii. If open is an abrupt completion, then i. Remove iters[k] from openIters. ii. Return ? IteratorCloseAll(openIters, open). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3699
iterator-zip-iteration.js --- esid: sec-iterator.zipkeyed description: > Perform iteration in IteratorZip. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 16. Return IteratorZip(iters, mode, padding, finishResults). IteratorZip ( iters, mode, padding, finishResults ) 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... iii. For each integer i such that 0 ≤ i < iterCount, in ascending order, do ... 3. Else, a. Let result be Completion(IteratorStepValue(iter)). ... includes: [compareArray.js] features: [joint-iteration] --- 3808
length.js --- esid: sec-iterator.zipkeyed description: > Iterator.zipKeyed has a "length" property whose value is 1. info: | ECMAScript Standard Built-in Objects Unless otherwise specified, the length property of a built-in Function object has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }. features: [joint-iteration] includes: [propertyHelper.js] --- 676
name.js --- esid: sec-iterator.zipkeyed description: > The "name" property of Iterator.zipKeyed info: | 17 ECMAScript Standard Built-in Objects Every built-in Function object, including constructors, that is not identified as an anonymous function has a name property whose value is a String. Unless otherwise specified, this value is the name that is given to the function in this specification. ... Unless otherwise specified, the name property of a built-in Function object, if it exists, has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }. features: [joint-iteration] includes: [propertyHelper.js] --- 949
non-constructible.js --- esid: sec-iterator.zipkeyed description: > Iterator.zipKeyed is not constructible. Built-in function objects that are not identified as constructors do not implement the [[Construct]] internal method unless otherwise specified in the description of a particular function. features: [joint-iteration] --- 541
options-mode.js --- esid: sec-iterator.zipkeyed description: > The "mode" option must be undefined or a valid string mode. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 3. Let mode be ? Get(options, "mode"). 4. If mode is undefined, set mode to "shortest". 5. If mode is not one of "shortest", "longest", or "strict", throw a TypeError exception. ... features: [joint-iteration] --- 1878
options-padding.js --- esid: sec-iterator.zipkeyed description: > The "padding" option must be undefined or an object. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 6. Let paddingOption be undefined. 7. If mode is "longest", then a. Set paddingOption to ? Get(options, "padding"). b. If paddingOption is not undefined and paddingOption is not an Object, throw a TypeError exception. ... features: [joint-iteration] --- 1459
options.js --- esid: sec-iterator.zipkeyed description: > The "options" argument can either be undefined or an object. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 2. Set options to ? GetOptionsObject(options). ... GetOptionsObject ( options ) 1. If options is undefined, then a. Return OrdinaryObjectCreate(null). 2. If options is an Object, then a. Return options. 3. Throw a TypeError exception. features: [joint-iteration] --- 1105
padding-iteration-get-abrupt-completion.js --- esid: sec-iterator.zipkeyed description: > Abrupt completion for Get in "padding" option iteration. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 14. If mode is "longest", then ... b. Else, i. For each element key of keys, do 1. Let value be Completion(Get(paddingOption, key)). 2. IfAbruptCloseIterators(value, iters). ... IfAbruptCloseIterators ( value, iteratorRecords ) 1. Assert: value is a Completion Record. 2. If value is an abrupt completion, return ? IteratorCloseAll(iteratorRecords, value). 3. Else, set value to value.[[Value]]. IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) 1. Assert: iteratorRecord.[[Iterator]] is an Object. 2. Let iterator be iteratorRecord.[[Iterator]]. 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). 5. If completion is a throw completion, return ? completion. ... includes: [compareArray.js] features: [joint-iteration] --- 3359
padding-iteration.js --- esid: sec-iterator.zipkeyed description: > Perform keys iteration on the "padding" option. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 14. If mode is "longest", then ... b. Else, i. For each element key of keys, do 1. Let value be Completion(Get(paddingOption, key)). ... includes: [proxyTrapsHelper.js, compareArray.js] features: [joint-iteration] --- 1523
prop-desc.js --- esid: sec-iterator.zipkeyed description: > Property descriptor of Iterator.zipKeyed info: | 17 ECMAScript Standard Built-in Objects Every other data property described in clauses 18 through 26 and in Annex B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified. features: [joint-iteration] includes: [propertyHelper.js] --- 694
proto.js --- esid: sec-iterator.zipkeyed description: > The value of the [[Prototype]] internal slot of Iterator.zipKeyed is the intrinsic object %FunctionPrototype%. features: [joint-iteration] --- 528
result-is-iterator.js --- esid: sec-iterator.zipkeyed description: > The value of the [[Prototype]] internal slot of the return value of Iterator.zipKeyed is the intrinsic object %IteratorHelperPrototype%. includes: [wellKnownIntrinsicObjects.js] features: [joint-iteration] --- 696
results-object-from-array.js --- esid: sec-iterator.zipkeyed description: > Calling Iterator.zipKeyed with an array object. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 15. Let finishResults be a new Abstract Closure with parameters (results) that captures keys and iterCount and performs the following steps when called: a. Let obj be OrdinaryObjectCreate(null). b. For each integer i such that 0 ≤ i < iterCount, in ascending order, do i. Perform ! CreateDataPropertyOrThrow(obj, keys[i], results[i]). c. Return obj. ... features: [joint-iteration] --- 1389
results-object-has-default-attributes.js --- esid: sec-iterator.zipkeyed description: > Returned object has the correct prototype and default property attributes. info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 15. Let finishResults be a new Abstract Closure with parameters (results) that captures keys and iterCount and performs the following steps when called: a. Let obj be OrdinaryObjectCreate(null). b. For each integer i such that 0 ≤ i < iterCount, in ascending order, do i. Perform ! CreateDataPropertyOrThrow(obj, keys[i], results[i]). c. Return obj. ... includes: [compareArray.js, propertyHelper.js] features: [joint-iteration] --- 2551
results-object-has-no-undefined-iterables-properties.js --- esid: sec-iterator.zipkeyed description: > Undefined properties from the "iterables" object are not present in the results object info: | Iterator.zipKeyed ( iterables [ , options ] ) ... 12. For each element key of allKeys, do a. Let desc be Completion(iterables.[[GetOwnProperty]](key)). b. IfAbruptCloseIterators(desc, iters). c. If desc is not undefined and desc.[[Enumerable]] is true, then ... features: [joint-iteration] --- 1038
shell.js --- description: | Utility functions for testing Iterator.prototype.zip and Iterator.prototype.zipKeyed. Requires inclusion of propertyHelper.js. defines: - forEachSequenceCombination - forEachSequenceCombinationKeyed - assertZipped - assertZippedKeyed - assertIteratorResult - assertIsPackedArray --- 16409
suspended-start-iterator-close-calls-next.js --- esid: sec-iterator.zipkeyed description: > Generator is closed from suspended-start state and IteratorClose calls next. info: | %IteratorHelperPrototype%.return ( ) ... 4. If O.[[GeneratorState]] is suspended-start, then a. Set O.[[GeneratorState]] to completed. ... c. Perform ? IteratorCloseAll(O.[[UnderlyingIterators]], ReturnCompletion(undefined)). d. Return CreateIteratorResultObject(undefined, true). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) ... 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). ... %IteratorHelperPrototype%.next ( ) 1. Return ? GeneratorResume(this value, undefined, "Iterator Helper"). GeneratorResume ( generator, value, generatorBrand ) 1. Let state be ? GeneratorValidate(generator, generatorBrand). 2. If state is completed, return CreateIteratorResultObject(undefined, true). ... GeneratorValidate ( generator, generatorBrand ) ... 5. Let state be generator.[[GeneratorState]]. 6. If state is executing, throw a TypeError exception. 7. Return state. features: [joint-iteration] --- 2557
suspended-start-iterator-close-calls-return.js --- esid: sec-iterator.zipkeyed description: > Generator is closed from suspended-start state and IteratorClose calls return. info: | %IteratorHelperPrototype%.return ( ) ... 4. If O.[[GeneratorState]] is suspended-start, then a. Set O.[[GeneratorState]] to completed. ... c. Perform ? IteratorCloseAll(O.[[UnderlyingIterators]], ReturnCompletion(undefined)). d. Return CreateIteratorResultObject(undefined, true). 5. Let C be ReturnCompletion(undefined). 6. Return ? GeneratorResumeAbrupt(O, C, "Iterator Helper"). IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) ... 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). ... 8. Return ? completion. GeneratorResumeAbrupt ( generator, abruptCompletion, generatorBrand ) 1. Let state be ? GeneratorValidate(generator, generatorBrand). 2. If state is suspended-start, then ... 3. If state is completed, then a. If abruptCompletion is a return completion, then i. Return CreateIteratorResultObject(abruptCompletion.[[Value]], true). ... GeneratorValidate ( generator, generatorBrand ) ... 5. Let state be generator.[[GeneratorState]]. 6. If state is executing, throw a TypeError exception. 7. Return state. features: [joint-iteration] --- 2819
suspended-yield-iterator-close-calls-next.js --- esid: sec-iterator.zipkeyed description: > Generator is closed from suspended-yield state and IteratorClose calls next. info: | %IteratorHelperPrototype%.return ( ) ... 5. Let C be ReturnCompletion(undefined). 6. Return ? GeneratorResumeAbrupt(O, C, "Iterator Helper"). GeneratorResumeAbrupt ( generator, abruptCompletion, generatorBrand ) 1. Let state be ? GeneratorValidate(generator, generatorBrand). ... 4. Assert: state is suspended-yield. ... 8. Set generator.[[GeneratorState]] to executing. ... 10. Resume the suspended evaluation of genContext using abruptCompletion as the result of the operation that suspended it. Let result be the Completion Record returned by the resumed computation. ... GeneratorValidate ( generator, generatorBrand ) ... 5. Let state be generator.[[GeneratorState]]. 6. If state is executing, throw a TypeError exception. 7. Return state. IteratorZip ( iters, mode, padding, finishResults ) ... 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... v. Let completion be Completion(Yield(results)). vi. If completion is an abrupt completion, then 1. Return ? IteratorCloseAll(openIters, completion). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) ... 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). ... %IteratorHelperPrototype%.next ( ) 1. Return ? GeneratorResume(this value, undefined, "Iterator Helper"). GeneratorResume ( generator, value, generatorBrand ) 1. Let state be ? GeneratorValidate(generator, generatorBrand). ... features: [joint-iteration] --- 3274
suspended-yield-iterator-close-calls-return.js --- esid: sec-iterator.zipkeyed description: > Generator is closed from suspended-yield state and IteratorClose calls return. info: | %IteratorHelperPrototype%.return ( ) ... 5. Let C be ReturnCompletion(undefined). 6. Return ? GeneratorResumeAbrupt(O, C, "Iterator Helper"). GeneratorResumeAbrupt ( generator, abruptCompletion, generatorBrand ) 1. Let state be ? GeneratorValidate(generator, generatorBrand). ... 4. Assert: state is suspended-yield. ... 8. Set generator.[[GeneratorState]] to executing. ... 10. Resume the suspended evaluation of genContext using abruptCompletion as the result of the operation that suspended it. Let result be the Completion Record returned by the resumed computation. ... GeneratorValidate ( generator, generatorBrand ) ... 5. Let state be generator.[[GeneratorState]]. 6. If state is executing, throw a TypeError exception. 7. Return state. IteratorZip ( iters, mode, padding, finishResults ) ... 3. Let closure be a new Abstract Closure with no parameters that captures iters, iterCount, openIters, mode, padding, and finishResults, and performs the following steps when called: ... b. Repeat, ... v. Let completion be Completion(Yield(results)). vi. If completion is an abrupt completion, then 1. Return ? IteratorCloseAll(openIters, completion). ... IteratorCloseAll ( iters, completion ) 1. For each element iter of iters, in reverse List order, do a. Set completion to Completion(IteratorClose(iter, completion)). 2. Return ? completion. IteratorClose ( iteratorRecord, completion ) ... 3. Let innerResult be Completion(GetMethod(iterator, "return")). 4. If innerResult is a normal completion, then a. Let return be innerResult.[[Value]]. b. If return is undefined, return ? completion. c. Set innerResult to Completion(Call(return, iterator)). ... features: [joint-iteration] --- 3044