| Index: test/mjsunit/harmony/async-await-species.js
|
| diff --git a/test/mjsunit/harmony/async-await-species.js b/test/mjsunit/harmony/async-await-species.js
|
| deleted file mode 100644
|
| index bc3db83fdfa1141ede427ba27cd2f0a421abe8cf..0000000000000000000000000000000000000000
|
| --- a/test/mjsunit/harmony/async-await-species.js
|
| +++ /dev/null
|
| @@ -1,101 +0,0 @@
|
| -// Copyright 2016 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Flags: --harmony-async-await --allow-natives-syntax
|
| -
|
| -function assertEqualsAsync(expected, run, msg) {
|
| - var actual;
|
| - var hadValue = false;
|
| - var hadError = false;
|
| - var promise = run();
|
| -
|
| - if (typeof promise !== "object" || typeof promise.then !== "function") {
|
| - throw new MjsUnitAssertionError(
|
| - "Expected " + run.toString() +
|
| - " to return a Promise, but it returned " + PrettyPrint(promise));
|
| - }
|
| -
|
| - promise.then(function(value) { hadValue = true; actual = value; },
|
| - function(error) { hadError = true; actual = error; });
|
| -
|
| - assertFalse(hadValue || hadError);
|
| -
|
| - %RunMicrotasks();
|
| -
|
| - if (hadError) throw actual;
|
| -
|
| - assertTrue(
|
| - hadValue, "Expected '" + run.toString() + "' to produce a value");
|
| -
|
| - assertEquals(expected, actual, msg);
|
| -};
|
| -
|
| -// Rename a function so that it can help omit things from stack trace.
|
| -function test(fn) {
|
| - return Object.defineProperty(fn, "name", {
|
| - enumerable: false,
|
| - configurable: true,
|
| - value: "@" + fn.name,
|
| - writable: false
|
| - });
|
| -}
|
| -
|
| -function getStack(error) {
|
| - var stack = error.stack.split('\n').
|
| - filter(function(line) {
|
| - return /^\s*at @?[a-zA-Z0-9_]/.test(line);
|
| - }).
|
| - map(line => line.replace(/^\s*at (@?[a-zA-Z0-9_\.\[\]]+)(.*)/, "$1"));
|
| -
|
| - // remove `Promise.then()` invocation by assertEqualsAsync()
|
| - if (stack[2] === "assertEqualsAsync") return [];
|
| -
|
| - return stack.reverse();
|
| -}
|
| -
|
| -var log = [];
|
| -class FakePromise extends Promise {
|
| - constructor(executor) {
|
| - var stack = getStack(new Error("Getting Callstack"));
|
| - if (stack.length) {
|
| - var first = -1;
|
| - for (var i = 0; i < stack.length; ++i) {
|
| - if (stack[i][0] === '@') {
|
| - first = i;
|
| - break;
|
| - }
|
| - }
|
| - while (first > 0) stack.shift(), --first;
|
| - if (stack.length) {
|
| - log.push("@@Species: [" + stack.join(" > ") + "]");
|
| - }
|
| - }
|
| - return new Promise(executor);
|
| - }
|
| -};
|
| -
|
| -Object.defineProperty(Promise, Symbol.species, {
|
| - value: FakePromise,
|
| - configurable: true,
|
| - enumerable: false,
|
| - writable: false
|
| -});
|
| -
|
| -// Internal `AsyncFunctionAwait` only --- no @@species invocations.
|
| -async function asyncFn() { return await "foo"; }
|
| -assertEqualsAsync("foo", test(function testInternalOnly() { return asyncFn(); },
|
| - "should not call Promise[@@Species]"));
|
| -assertEquals([], log);
|
| -
|
| -log.length = 0;
|
| -assertEqualsAsync(
|
| - "foo",
|
| - test(function testThenOnReturnedPromise() {
|
| - return asyncFn().then(x => (log.push("Then: " + x), x));
|
| - }),
|
| - "should call Promise[@@Species] after non-internal Then");
|
| -assertEquals([
|
| - "@@Species: [@testThenOnReturnedPromise > Promise.then > FakePromise]",
|
| - "Then: foo"
|
| -], log);
|
|
|