// Copyright (C) 2017 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- template: default desc: Rest element containing an array BindingElementList pattern info: | 13.3.3.6 Runtime Semantics: IteratorBindingInitialization BindingRestElement : ... BindingPattern 1. Let A be ArrayCreate(0). [...] 3. Repeat [...] b. If iteratorRecord.[[done]] is true, then i. Return the result of performing BindingInitialization of BindingPattern with A and environment as the arguments. [...] 13.3.3.6 Runtime Semantics: IteratorBindingInitialization SingleNameBinding : BindingIdentifier Initializer_opt [...] 3. If iteratorRecord.[[done]] is false, then a. Let next be IteratorStep(iteratorRecord.[[iterator]]). b. If next is an abrupt completion, set iteratorRecord.[[done]] to true. c. ReturnIfAbrupt(next). d. If next is false, set iteratorRecord.[[done]] to true. e. Else, i. Let v be IteratorValue(next). ii. If v is an abrupt completion, set iteratorRecord.[[done]] to true. iii. ReturnIfAbrupt(v). 4. If iteratorRecord.[[done]] is true, let v be undefined. [...] 7. Return InitializeReferencedBinding(lhs, v). ---*/ //- elems [...[x, y, z]] //- vals [3, 4, 5] //- body assert.sameValue(x, 3); assert.sameValue(y, 4); assert.sameValue(z, 5);