text: // This file was procedurally generated from the following sources:
  // - src/dstr-binding/ary-ptrn-rest-id-elision.case
  // - src/dstr-binding/default/for-of-var.template
  /*---
  description: Rest element following elision elements (for-of statement)
  esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
  es6id: 13.7.5.11
  features: [destructuring-binding]
  flags: [generated]
  info: |
      IterationStatement :
          for ( var ForBinding of AssignmentExpression ) Statement
  
      [...]
      3. Return ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult,
         varBinding, labelSet).
  
      13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
  
      [...]
      3. Let destructuring be IsDestructuring of lhs.
      [...]
      5. Repeat
         [...]
         h. If destructuring is false, then
            [...]
         i. Else
            i. If lhsKind is assignment, then
               [...]
            ii. Else if lhsKind is varBinding, then
                1. Assert: lhs is a ForBinding.
                2. Let status be the result of performing BindingInitialization
                   for lhs passing nextValue and undefined as the arguments.
            [...]
  
      13.3.3.6 Runtime Semantics: IteratorBindingInitialization
      ArrayBindingPattern : [ Elisionopt BindingRestElement ]
      1. If Elision is present, then
         a. Let status be the result of performing
            IteratorDestructuringAssignmentEvaluation of Elision with
            iteratorRecord as the argument.
         b. ReturnIfAbrupt(status).
      2. Return the result of performing IteratorBindingInitialization for
         BindingRestElement with iteratorRecord and environment as arguments.
  ---*/
  var values = [1, 2, 3, 4, 5];
  
  var iterCount = 0;
  
  for (var [ , , ...x] of [values]) {
    assert(Array.isArray(x));
    assert.sameValue(x.length, 3);
    assert.sameValue(x[0], 3);
    assert.sameValue(x[1], 4);
    assert.sameValue(x[2], 5);
    assert.notSameValue(x, values);
  
    iterCount += 1;
  }
  
  assert.sameValue(iterCount, 1, 'Iteration occurred as expected');
  