| // Copyright (C) 2016 the V8 project authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| desc: BindingElement with array binding pattern and initializer is not used |
| template: default |
| info: | |
| 13.3.3.6 Runtime Semantics: IteratorBindingInitialization |
| |
| BindingElement : BindingPatternInitializer opt |
| |
| 1. If iteratorRecord.[[done]] is false, then |
| a. Let next be IteratorStep(iteratorRecord.[[iterator]]). |
| [...] |
| e. Else, |
| i. Let v be IteratorValue(next). |
| [...] |
| 4. Return the result of performing BindingInitialization of BindingPattern |
| with v and environment as the arguments. |
| ---*/ |
| |
| //- setup |
| var values = [2, 1, 3]; |
| var initCount = 0; |
| //- elems |
| [[...x] = function() { initCount += 1; }()] |
| //- vals |
| [values] |
| //- body |
| assert(Array.isArray(x)); |
| assert.sameValue(x[0], 2); |
| assert.sameValue(x[1], 1); |
| assert.sameValue(x[2], 3); |
| assert.sameValue(x.length, 3); |
| assert.notSameValue(x, values); |
| assert.sameValue(initCount, 0); |