text: // This file was procedurally generated from the following sources:
  // - src/dstr-assignment/obj-rest-valid-object.case
  // - src/dstr-assignment/default/for-of.template
  /*---
  description: Rest object contains just unextracted data (For..of statement)
  esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
  es6id: 13.7.5.11
  features: [object-rest, destructuring-binding]
  flags: [generated]
  includes: [propertyHelper.js]
  info: |
      IterationStatement :
        for ( LeftHandSideExpression of AssignmentExpression ) Statement
  
      1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« »,
         AssignmentExpression, iterate).
      2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement,
         keyResult, assignment, labelSet).
  
      13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation
  
      [...]
      4. If destructuring is true and if lhsKind is assignment, then
         a. Assert: lhs is a LeftHandSideExpression.
         b. Let assignmentPattern be the parse of the source text corresponding to
            lhs using AssignmentPattern as the goal symbol.
      [...]
  ---*/
  var rest, a, b;
  
  
  var counter = 0;
  
  for ({a, b, ...rest} of [{x: 1, y: 2, a: 5, b: 3}]) {
    assert.sameValue(rest.x, 1);
    assert.sameValue(rest.y, 2);
    assert.sameValue(rest.a, undefined);
    assert.sameValue(rest.b, undefined);
  
    verifyEnumerable(rest, "x");
    verifyWritable(rest, "x");
    verifyConfigurable(rest, "x");
  
    verifyEnumerable(rest, "y");
    verifyWritable(rest, "y");
    verifyConfigurable(rest, "y");
  
    counter += 1;
  }
  
  assert.sameValue(counter, 1);
  