tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

dflt-ary-ptrn-rest-id-elision.js (1665B)


      1 // |reftest| async
      2 // This file was procedurally generated from the following sources:
      3 // - src/dstr-binding/ary-ptrn-rest-id-elision.case
      4 // - src/dstr-binding/default/async-gen-func-decl-dflt.template
      5 /*---
      6 description: Rest element following elision elements (async generator function declaration (default parameter))
      7 esid: sec-asyncgenerator-definitions-instantiatefunctionobject
      8 features: [async-iteration]
      9 flags: [generated, async]
     10 info: |
     11    AsyncGeneratorDeclaration : async [no LineTerminator here] function * BindingIdentifier
     12        ( FormalParameters ) { AsyncGeneratorBody }
     13 
     14        [...]
     15        3. Let F be ! AsyncGeneratorFunctionCreate(Normal, FormalParameters, AsyncGeneratorBody,
     16            scope, strict).
     17        [...]
     18 
     19 
     20    13.3.3.6 Runtime Semantics: IteratorBindingInitialization
     21    ArrayBindingPattern : [ Elisionopt BindingRestElement ]
     22    1. If Elision is present, then
     23       a. Let status be the result of performing
     24          IteratorDestructuringAssignmentEvaluation of Elision with
     25          iteratorRecord as the argument.
     26       b. ReturnIfAbrupt(status).
     27    2. Return the result of performing IteratorBindingInitialization for
     28       BindingRestElement with iteratorRecord and environment as arguments.
     29 ---*/
     30 var values = [1, 2, 3, 4, 5];
     31 
     32 
     33 var callCount = 0;
     34 async function* f([ , , ...x] = values) {
     35  assert(Array.isArray(x));
     36  assert.sameValue(x.length, 3);
     37  assert.sameValue(x[0], 3);
     38  assert.sameValue(x[1], 4);
     39  assert.sameValue(x[2], 5);
     40  assert.notSameValue(x, values);
     41  callCount = callCount + 1;
     42 };
     43 f().next().then(() => {
     44    assert.sameValue(callCount, 1, 'invoked exactly once');
     45 }).then($DONE, $DONE);