text: // This file was procedurally generated from the following sources:
  // - src/dstr-binding/ary-ptrn-rest-ary-empty.case
  // - src/dstr-binding/default/async-gen-func-decl.template
  /*---
  description: Rest element containing an "empty" array pattern (async generator function declaration)
  esid: sec-asyncgenerator-definitions-instantiatefunctionobject
  features: [generators, async-iteration]
  flags: [generated, async]
  info: |
      AsyncGeneratorDeclaration : async [no LineTerminator here] function * BindingIdentifier
          ( FormalParameters ) { AsyncGeneratorBody }
  
          [...]
          3. Let F be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters, AsyncGeneratorBody,
              scope, strict).
          [...]
  
  
      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
  
      ArrayBindingPattern : [ ]
  
      1. Return NormalCompletion(empty).
  
  ---*/
  var iterations = 0;
  var iter = function*() {
    iterations += 1;
  }();
  
  
  var callCount = 0;
  async function* f([...[]]) {
    assert.sameValue(iterations, 1);
    callCount = callCount + 1;
  };
  f(iter).next().then(() => {
      assert.sameValue(callCount, 1, 'invoked exactly once');
  }).then($DONE, $DONE);
  