tor-browser

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

yield-star-next-then-non-callable-number-fulfillpromise.js (2302B)


      1 // |reftest| async
      2 // This file was procedurally generated from the following sources:
      3 // - src/async-generators/yield-star-next-then-non-callable-number-fulfillpromise.case
      4 // - src/async-generators/default/async-class-decl-static-method.template
      5 /*---
      6 description: FulfillPromise if next().then is not-callable (number) (Static async generator method as a ClassDeclaration element)
      7 esid: prod-AsyncGeneratorMethod
      8 features: [Symbol.iterator, Symbol.asyncIterator, async-iteration]
      9 flags: [generated, async]
     10 info: |
     11    ClassElement :
     12      static MethodDefinition
     13 
     14    MethodDefinition :
     15      AsyncGeneratorMethod
     16 
     17    Async Generator Function Definitions
     18 
     19    AsyncGeneratorMethod :
     20      async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody }
     21 
     22 
     23    YieldExpression: yield * AssignmentExpression
     24    ...
     25    6. Repeat
     26      a. If received.[[Type]] is normal, then
     27        ii. Let innerResult be ? Invoke(iterator, "next",
     28            « received.[[Value]] »).
     29        iii. If generatorKind is async, then set innerResult to
     30             ? Await(innerResult).
     31        iv. If Type(innerResult) is not Object, throw a TypeError exception.
     32    ...
     33 
     34    Await
     35 
     36    ...
     37    2. Let promiseCapability be ! NewPromiseCapability(%Promise%).
     38    3. Perform ! Call(promiseCapability.[[Resolve]], undefined, « promise »).
     39    ...
     40 
     41    Promise Resolve Functions
     42 
     43    ...
     44    7. If Type(resolution) is not Object, then
     45      a. Return FulfillPromise(promise, resolution).
     46    8. Let then be Get(resolution, "then").
     47    ...
     48    11. If IsCallable(thenAction) is false, then
     49      a. Return FulfillPromise(promise, resolution).
     50    ...
     51 
     52 ---*/
     53 var obj = {
     54  get [Symbol.iterator]() {
     55    throw new Test262Error('it should not get Symbol.iterator');
     56  },
     57  [Symbol.asyncIterator]() {
     58    return {
     59      next() {
     60        return {
     61          then: 39,
     62          value: 42,
     63          done: false
     64        }
     65      }
     66    };
     67  }
     68 };
     69 
     70 
     71 
     72 var callCount = 0;
     73 
     74 class C { static async *gen() {
     75    callCount += 1;
     76    yield* obj;
     77      throw new Test262Error('completion closes iter');
     78 
     79 }}
     80 
     81 var gen = C.gen;
     82 
     83 var iter = gen();
     84 
     85 iter.next().then(({ value, done }) => {
     86  assert.sameValue(value, 42);
     87  assert.sameValue(done, false);
     88 }).then($DONE, $DONE);
     89 
     90 assert.sameValue(callCount, 1);