tor-browser

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

yield-thenable-create-resolving-functions-reject.js (1795B)


      1 // |reftest| async
      2 // Copyright (C) 2020 Alexey Shvayka. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 
      5 /*---
      6 esid: sec-generator-function-definitions-runtime-semantics-evaluation
      7 description: >
      8  `reject` is anonymous built-in function with length of 1.
      9 info: |
     10  YieldExpression : yield AssignmentExpression 
     11 
     12  [...]
     13  4. If generatorKind is async, then return ? AsyncGeneratorYield(value).
     14 
     15  AsyncGeneratorYield ( value )
     16 
     17  [...]
     18  5. Set value to ? Await(value).
     19  [...]
     20  9. Return ! AsyncGeneratorResolve(generator, value, false).
     21 
     22  Await
     23 
     24  [...]
     25  2. Let promise be ? PromiseResolve(%Promise%, value).
     26  [...]
     27 
     28  PromiseResolve ( C, x )
     29 
     30  [...]
     31  3. Let promiseCapability be ? NewPromiseCapability(C).
     32  4. Perform ? Call(promiseCapability.[[Resolve]], undefined, « x »).
     33  5. Return promiseCapability.[[Promise]].
     34 
     35  NewPromiseCapability ( C )
     36 
     37  [...]
     38  7. Let promise be ? Construct(C, « executor »).
     39  [...]
     40  11. Return promiseCapability.
     41 
     42  Promise ( executor )
     43 
     44  [...]
     45  8. Let resolvingFunctions be CreateResolvingFunctions(promise).
     46  [...]
     47  11. Return promise.
     48 
     49  CreateResolvingFunctions ( promise )
     50 
     51  [...]
     52  7. Let reject be ! CreateBuiltinFunction(stepsReject, « [[Promise]], [[AlreadyResolved]] »).
     53  [...]
     54  10. Return the Record { [[Resolve]]: resolve, [[Reject]]: reject }.
     55 flags: [async]
     56 features: [async-iteration, Reflect.construct]
     57 includes: [isConstructor.js]
     58 ---*/
     59 
     60 var thenable = {
     61  then: function(resolve, reject) {
     62    resolve(reject);
     63  },
     64 };
     65 
     66 var iter = (async function*() {
     67  yield thenable;
     68 }());
     69 
     70 iter.next().then(function(result) {
     71  var reject = result.value;
     72  assert(!isConstructor(reject));
     73  assert.sameValue(reject.length, 1);
     74  assert.sameValue(reject.name, '');
     75 }).then($DONE, $DONE);