Name Description Size
basic-longest.js --- esid: sec-iterator.zip description: > Basic Iterator.zip test with "longest" mode. includes: [compareArray.js, propertyHelper.js, iteratorZipUtils.js] features: [joint-iteration] --- 2216
basic-shortest.js --- esid: sec-iterator.zip description: > Basic Iterator.zip test with "shortest" mode. includes: [compareArray.js, propertyHelper.js, iteratorZipUtils.js] features: [joint-iteration] --- 921
basic-strict.js --- esid: sec-iterator.zip description: > Basic Iterator.zip test with "strict" mode. includes: [compareArray.js, propertyHelper.js, iteratorZipUtils.js] features: [joint-iteration] --- 977
browser.js 0
is-function.js --- esid: sec-iterator.zip description: > Iterator.zip is a built-in function features: [joint-iteration] --- 381
iterables-containing-string-objects.js --- esid: sec-iterator.zip description: > Accepts String objects as inputs. includes: [compareArray.js] features: [joint-iteration] --- 535
iterables-iteration-after-reading-options.js --- esid: sec-iterator.zip description: > Perform iteration of the "iterables" argument after reading all properties. info: | Iterator.zip ( iterables [ , options ] ) ... 3. Let mode be ? Get(options, "mode"). ... 7. If mode is "longest", then a. Set paddingOption to ? Get(options, "padding"). ... 10. Let inputIter be ? GetIterator(iterables, sync). ... includes: [compareArray.js] features: [joint-iteration] --- 1394
iterables-iteration-get-iterator-flattenable-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completions during iterables iteration. info: | Iterator.zip ( iterables [ , options ] ) ... 12. Repeat, while next is not done, ... c. If next is not done, then i. Let iter be Completion(GetIteratorFlattenable(next, reject-strings)). ii. IfAbruptCloseIterators(iter, the list-concatenation of « inputIter » and 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] --- 4643
iterables-iteration-iterator-step-value-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completions during iterables iteration. info: | Iterator.zip ( iterables [ , options ] ) ... 12. Repeat, while next is not done, a. Set next to Completion(IteratorStepValue(inputIter)). b. IfAbruptCloseIterators(next, 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] --- 3244
iterables-iteration.js --- esid: sec-iterator.zip description: > Perform iteration of the "iterables" argument. info: | Iterator.zip ( iterables [ , options ] ) ... 10. Let inputIter be ? GetIterator(iterables, sync). 11. Let next be not-started. 12. Repeat, while next is not done, a. Set next to Completion(IteratorStepValue(inputIter)). b. IfAbruptCloseIterators(next, iters). c. If next is not done, then i. Let iter be Completion(GetIteratorFlattenable(next, reject-strings)). ii. IfAbruptCloseIterators(iter, the list-concatenation of « inputIter » and iters). iii. Append iter to iters. ... GetIterator ( obj, kind ) ... 2. Else, a. Let method be ? GetMethod(obj, %Symbol.iterator%). 3. If method is undefined, throw a TypeError exception. 4. Return ? GetIteratorFromMethod(obj, method). GetIteratorFromMethod ( obj, method ) 1. Let iterator be ? Call(method, obj). 2. If iterator is not an Object, throw a TypeError exception. 3. Return ? GetIteratorDirect(iterator). GetIteratorDirect ( obj ) 1. Let nextMethod be ? Get(obj, "next"). 2. Let iteratorRecord be the Iterator Record { [[Iterator]]: obj, [[NextMethod]]: nextMethod, [[Done]]: false }. 3. Return iteratorRecord. 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). includes: [proxyTrapsHelper.js, compareArray.js] features: [joint-iteration] --- 4483
iterables-primitive.js --- esid: sec-iterator.zip description: > Throws a TypeError when the "iterables" argument is not an object. info: | Iterator.zip ( iterables [ , options ] ) 1. If iterables is not an Object, throw a TypeError exception. ... features: [joint-iteration] --- 1115
iterator-non-iterable.js --- esid: sec-iterator.zip description: > Throws a TypeError when the "iterables" argument is not iterable. features: [joint-iteration] --- 624
iterator-zip-iteration-iterator-close-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completion from IteratorStep in IteratorZip. info: | Iterator.zip ( 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] --- 3204
iterator-zip-iteration-iterator-step-value-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completion from IteratorStepValue in IteratorZip. info: | Iterator.zip ( 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] --- 3931
iterator-zip-iteration-longest-iterator-close-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completion from IteratorStep in IteratorZip. info: | Iterator.zip ( 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] --- 3411
iterator-zip-iteration-shortest-iterator-close-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completion from IteratorCloseAll in IteratorZip. info: | Iterator.zip ( 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] --- 3513
iterator-zip-iteration-strict-iterator-close-i-is-not-zero-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completion from IteratorCloseAll in IteratorZip. info: | Iterator.zip ( 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] --- 3155
iterator-zip-iteration-strict-iterator-close-i-is-zero-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completion from IteratorCloseAll in IteratorZip. info: | Iterator.zip ( 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] --- 3569
iterator-zip-iteration-strict-iterator-step-abrupt-completion.js --- esid: sec-iterator.zip description: > Handle abrupt completion from IteratorStep in IteratorZip. info: | Iterator.zip ( 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] --- 3684
iterator-zip-iteration.js --- esid: sec-iterator.zip description: > Perform iteration in IteratorZip. info: | Iterator.zip ( 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] --- 3771
length.js --- esid: sec-iterator.zip description: > Iterator.zip 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] --- 661
name.js --- esid: sec-iterator.zip description: > The "name" property of Iterator.zip 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] --- 929
non-constructible.js --- esid: sec-iterator.zip description: > Iterator.zip 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] --- 526
options-mode.js --- esid: sec-iterator.zip description: > The "mode" option must be undefined or a valid string mode. info: | Iterator.zip ( 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] --- 1838
options-padding.js --- esid: sec-iterator.zip description: > The "padding" option must be undefined or an object. info: | Iterator.zip ( 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] --- 1434
options.js --- esid: sec-iterator.zip description: > The "options" argument can either be undefined or an object. info: | Iterator.zip ( 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] --- 1080
padding-iteration-get-iterator-abrupt-completion.js --- esid: sec-iterator.zip description: > Abrupt completion for GetIterator in "padding" option iteration. info: | Iterator.zip ( iterables [ , options ] ) ... 14. If mode is "longest", then ... b. Else, i. Let paddingIter be Completion(GetIterator(paddingOption, sync)). ii. IfAbruptCloseIterators(paddingIter, 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] --- 3721
padding-iteration-iterator-close-abrupt-completion.js --- esid: sec-iterator.zip description: > Abrupt completion for IteratorClose in "padding" option iteration. info: | Iterator.zip ( iterables [ , options ] ) ... 14. If mode is "longest", then ... b. Else, i. Let paddingIter be Completion(GetIterator(paddingOption, sync)). ... v. If usingIterator is true, then 1. Let completion be Completion(IteratorClose(paddingIter, NormalCompletion(unused))). 2. IfAbruptCloseIterators(completion, 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] --- 3415
padding-iteration-iterator-step-value-abrupt-completion.js --- esid: sec-iterator.zip description: > Abrupt completion for IteratorStepValue in "padding" option iteration. info: | Iterator.zip ( iterables [ , options ] ) ... 14. If mode is "longest", then ... b. Else, i. Let paddingIter be Completion(GetIterator(paddingOption, sync)). ... iv. Perform the following steps iterCount times: 1. If usingIterator is true, then a. Set next to Completion(IteratorStepValue(paddingIter)). b. IfAbruptCloseIterators(next, 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] --- 4525
padding-iteration.js --- esid: sec-iterator.zip description: > Perform iteration of the "padding" option. info: | Iterator.zip ( iterables [ , options ] ) ... 14. If mode is "longest", then ... b. Else, i. Let paddingIter be Completion(GetIterator(paddingOption, sync)). ... iii. Let usingIterator be true. iv. Perform the following steps iterCount times: 1. If usingIterator is true, then a. Set next to Completion(IteratorStepValue(paddingIter)). ... c. If next is done, then i. Set usingIterator to false. d. Else, i. Append next to padding. 2. If usingIterator is false, append undefined to padding. v. If usingIterator is true, then 1. Let completion be Completion(IteratorClose(paddingIter, NormalCompletion(unused))). ... ... GetIterator ( obj, kind ) ... 2. Else, a. Let method be ? GetMethod(obj, %Symbol.iterator%). 3. If method is undefined, throw a TypeError exception. 4. Return ? GetIteratorFromMethod(obj, method). GetIteratorFromMethod ( obj, method ) 1. Let iterator be ? Call(method, obj). 2. If iterator is not an Object, throw a TypeError exception. 3. Return ? GetIteratorDirect(iterator). GetIteratorDirect ( obj ) 1. Let nextMethod be ? Get(obj, "next"). 2. Let iteratorRecord be the Iterator Record { [[Iterator]]: obj, [[NextMethod]]: nextMethod, [[Done]]: false }. 3. Return iteratorRecord. includes: [proxyTrapsHelper.js, compareArray.js] features: [joint-iteration] --- 3946
prop-desc.js --- esid: sec-iterator.zip description: > Property descriptor of Iterator.zip 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] --- 674
proto.js --- esid: sec-iterator.zip description: > The value of the [[Prototype]] internal slot of Iterator.zip is the intrinsic object %FunctionPrototype%. features: [joint-iteration] --- 508
result-is-iterator.js --- esid: sec-iterator.zip description: > The value of the [[Prototype]] internal slot of the return value of Iterator.zip is the intrinsic object %IteratorHelperPrototype%. includes: [wellKnownIntrinsicObjects.js] features: [joint-iteration] --- 676
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.zip 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] --- 2544
suspended-start-iterator-close-calls-return.js --- esid: sec-iterator.zip 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] --- 2806
suspended-yield-iterator-close-calls-next.js --- esid: sec-iterator.zip 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). ... includes: [compareArray.js] features: [joint-iteration] --- 3292
suspended-yield-iterator-close-calls-return.js --- esid: sec-iterator.zip 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)). ... includes: [compareArray.js] features: [joint-iteration] --- 3062