diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f11112811f517..d11a2b268b566 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15889,7 +15889,7 @@ namespace ts { // Promise/A+ compatible implementation will always assimilate any foreign promise, so the // return type of the body should be unwrapped to its awaited type, which we will wrap in // the native Promise type later in this function. - type = checkAwaitedType(type, /*errorNode*/ func); + type = checkAwaitedType(type, /*errorNode*/ func, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); } } else { @@ -15963,6 +15963,11 @@ namespace ts { // A yield* expression effectively yields everything that its operand yields type = checkIteratedTypeOrElementType(type, yieldExpression.expression, /*allowStringInput*/ false, (functionFlags & FunctionFlags.Async) !== 0); } + if (functionFlags & FunctionFlags.Async) { + type = checkAwaitedType(type, expr, yieldExpression.asteriskToken + ? Diagnostics.Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member + : Diagnostics.Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); + } if (!contains(aggregatedTypes, type)) { aggregatedTypes.push(type); } @@ -16012,7 +16017,7 @@ namespace ts { // Promise/A+ compatible implementation will always assimilate any foreign promise, so the // return type of the body should be unwrapped to its awaited type, which should be wrapped in // the native Promise type by the caller. - type = checkAwaitedType(type, func); + type = checkAwaitedType(type, func, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); } if (type.flags & TypeFlags.Never) { hasReturnOfTypeNever = true; @@ -16189,7 +16194,7 @@ namespace ts { const exprType = checkExpression(node.body); if (returnOrPromisedType) { if ((functionFlags & FunctionFlags.AsyncOrAsyncGenerator) === FunctionFlags.Async) { // Async function - const awaitedType = checkAwaitedType(exprType, node.body); + const awaitedType = checkAwaitedType(exprType, node.body, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); checkTypeAssignableTo(awaitedType, returnOrPromisedType, node.body); } else { // Normal function @@ -16305,7 +16310,7 @@ namespace ts { } const operandType = checkExpression(node.expression); - return checkAwaitedType(operandType, node); + return checkAwaitedType(operandType, node, Diagnostics.Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); } function checkPrefixUnaryExpression(node: PrefixUnaryExpression): Type { @@ -16952,10 +16957,22 @@ namespace ts { if (func.type) { const signatureElementType = getIteratedTypeOfGenerator(getTypeFromTypeNode(func.type), (functionFlags & FunctionFlags.Async) !== 0) || anyType; if (nodeIsYieldStar) { - checkTypeAssignableTo(expressionElementType, signatureElementType, node.expression, /*headMessage*/ undefined); + checkTypeAssignableTo( + functionFlags & FunctionFlags.Async + ? getAwaitedType(expressionElementType, node.expression, Diagnostics.Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member) + : expressionElementType, + signatureElementType, + node.expression, + /*headMessage*/ undefined); } else { - checkTypeAssignableTo(expressionType, signatureElementType, node.expression, /*headMessage*/ undefined); + checkTypeAssignableTo( + functionFlags & FunctionFlags.Async + ? getAwaitedType(expressionType, node.expression, Diagnostics.Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member) + : expressionType, + signatureElementType, + node.expression, + /*headMessage*/ undefined); } } } @@ -18290,9 +18307,9 @@ namespace ts { } } - function getAwaitedTypeOfPromise(type: Type, errorNode?: Node): Type | undefined { + function getAwaitedTypeOfPromise(type: Type, errorNode?: Node, diagnosticMessage?: DiagnosticMessage): Type | undefined { const promisedType = getPromisedTypeOfPromise(type, errorNode); - return promisedType && getAwaitedType(promisedType, errorNode); + return promisedType && getAwaitedType(promisedType, errorNode, diagnosticMessage); } /** @@ -18360,11 +18377,11 @@ namespace ts { * Promise-like type; otherwise, it is the type of the expression. This is used to reflect * The runtime behavior of the `await` keyword. */ - function checkAwaitedType(type: Type, errorNode: Node): Type { - return getAwaitedType(type, errorNode) || unknownType; + function checkAwaitedType(type: Type, errorNode: Node, diagnosticMessage: DiagnosticMessage): Type { + return getAwaitedType(type, errorNode, diagnosticMessage) || unknownType; } - function getAwaitedType(type: Type, errorNode?: Node): Type | undefined { + function getAwaitedType(type: Type, errorNode?: Node, diagnosticMessage?: DiagnosticMessage): Type | undefined { const typeAsAwaitable = type; if (typeAsAwaitable.awaitedTypeOfType) { return typeAsAwaitable.awaitedTypeOfType; @@ -18377,7 +18394,7 @@ namespace ts { if (type.flags & TypeFlags.Union) { let types: Type[]; for (const constituentType of (type).types) { - types = append(types, getAwaitedType(constituentType, errorNode)); + types = append(types, getAwaitedType(constituentType, errorNode, diagnosticMessage)); } if (!types) { @@ -18431,7 +18448,7 @@ namespace ts { // Keep track of the type we're about to unwrap to avoid bad recursive promise types. // See the comments above for more information. awaitedTypeStack.push(type.id); - const awaitedType = getAwaitedType(promisedType, errorNode); + const awaitedType = getAwaitedType(promisedType, errorNode, diagnosticMessage); awaitedTypeStack.pop(); if (!awaitedType) { @@ -18459,7 +18476,8 @@ namespace ts { const thenFunction = getTypeOfPropertyOfType(type, "then"); if (thenFunction && getSignaturesOfType(thenFunction, SignatureKind.Call).length > 0) { if (errorNode) { - error(errorNode, Diagnostics.Type_used_as_operand_to_await_or_the_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); + Debug.assert(!!diagnosticMessage); + error(errorNode, diagnosticMessage); } return undefined; } @@ -18570,7 +18588,7 @@ namespace ts { } // Get and return the awaited type of the return type. - return checkAwaitedType(returnType, node); + return checkAwaitedType(returnType, node, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); } /** Check a decorator */ @@ -19854,7 +19872,7 @@ namespace ts { // For an async iterator, we must get the awaited type of the return type. if (isAsyncIterator) { - nextResult = getAwaitedTypeOfPromise(nextResult, errorNode); + nextResult = getAwaitedTypeOfPromise(nextResult, errorNode, Diagnostics.The_type_returned_by_the_next_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property); if (isTypeAny(nextResult)) { return undefined; } @@ -19945,7 +19963,7 @@ namespace ts { else if (func.type || isGetAccessorWithAnnotatedSetAccessor(func)) { if (functionFlags & FunctionFlags.Async) { // Async function const promisedType = getPromisedTypeOfPromise(returnType); - const awaitedType = checkAwaitedType(exprType, node); + const awaitedType = checkAwaitedType(exprType, node, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); if (promisedType) { // If the function has a return type, but promisedType is // undefined, an error will be reported in checkAsyncFunctionReturnType diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index eb3e476a6f2b9..a1200b6a0721b 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -175,7 +175,7 @@ "category": "Error", "code": 1057 }, - "Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member.": { + "The return type of an async function must either be a valid promise or must not contain a callable 'then' member.": { "category": "Error", "code": 1058 }, @@ -867,6 +867,18 @@ "category": "Error", "code": 1319 }, + "Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.": { + "category": "Error", + "code": 1320 + }, + "Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member.": { + "category": "Error", + "code": 1321 + }, + "Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member.": { + "category": "Error", + "code": 1322 + }, "Duplicate identifier '{0}'.": { "category": "Error", "code": 2300 diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index b0e8b52782017..b43802c7a8f94 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -891,7 +891,8 @@ namespace ts { function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt b/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt index f8029687fb15a..42940c0e41279 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt +++ b/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt @@ -8,8 +8,8 @@ tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration1 Types of property 'then' are incompatible. Type '() => void' is not assignable to type '(onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => PromiseLike'. Type 'void' is not assignable to type 'PromiseLike'. -tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(17,16): error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. -tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(23,25): error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. +tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(17,16): error TS1058: The return type of an async function must either be a valid promise or must not contain a callable 'then' member. +tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts(23,25): error TS1320: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member. ==== tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration15_es5.ts (8 errors) ==== @@ -47,7 +47,7 @@ tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration1 async function fn12() { return obj; } // valid: Promise<{ then: string; }> async function fn13() { return thenable; } // error ~~~~ -!!! error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. +!!! error TS1058: The return type of an async function must either be a valid promise or must not contain a callable 'then' member. async function fn14() { await 1; } // valid: Promise async function fn15() { await null; } // valid: Promise async function fn16() { await undefined; } // valid: Promise @@ -55,5 +55,5 @@ tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration1 async function fn18() { await obj; } // valid: Promise async function fn19() { await thenable; } // error ~~~~~~~~~~~~~~ -!!! error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. +!!! error TS1320: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member. \ No newline at end of file diff --git a/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt b/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt index 60f57f3dfbffa..d7f27281d6d40 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt +++ b/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt @@ -3,8 +3,8 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1 tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(8,23): error TS1064: The return type of an async function or method must be the global Promise type. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(9,23): error TS1064: The return type of an async function or method must be the global Promise type. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(10,23): error TS1064: The return type of an async function or method must be the global Promise type. -tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(17,16): error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. -tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(23,25): error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. +tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(17,16): error TS1058: The return type of an async function must either be a valid promise or must not contain a callable 'then' member. +tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(23,25): error TS1320: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member. ==== tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts (7 errors) ==== @@ -36,7 +36,7 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1 async function fn12() { return obj; } // valid: Promise<{ then: string; }> async function fn13() { return thenable; } // error ~~~~ -!!! error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. +!!! error TS1058: The return type of an async function must either be a valid promise or must not contain a callable 'then' member. async function fn14() { await 1; } // valid: Promise async function fn15() { await null; } // valid: Promise async function fn16() { await undefined; } // valid: Promise @@ -44,5 +44,5 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1 async function fn18() { await obj; } // valid: Promise async function fn19() { await thenable; } // error ~~~~~~~~~~~~~~ -!!! error TS1058: Type used as operand to 'await' or the return type of an async function must either be a valid promise or must not contain a callable 'then' member. +!!! error TS1320: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member. \ No newline at end of file diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js index ba4902102b175..fe501f3c6bedd 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js @@ -68,7 +68,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -88,7 +89,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -109,7 +111,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -135,7 +138,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -156,7 +160,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -182,7 +187,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -203,7 +209,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -224,7 +231,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -247,7 +255,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js index 74a65673e5a5e..a618c0787d216 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js @@ -95,7 +95,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -148,7 +149,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -207,7 +209,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -271,7 +274,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -340,7 +344,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -421,7 +426,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -480,7 +486,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -533,7 +540,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -599,7 +607,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js index 2b0d6db5353f5..197a3d687c648 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js @@ -37,7 +37,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -55,7 +56,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -74,7 +76,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -98,7 +101,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -117,7 +121,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -141,7 +146,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -160,7 +166,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js index 42098455ed124..0dc0c02592eae 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js @@ -64,7 +64,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -112,7 +113,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -166,7 +168,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -225,7 +228,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -289,7 +293,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -365,7 +370,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -419,7 +425,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js index 90f4b70e9bd2c..4e22d0c99227d 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js @@ -37,7 +37,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -55,7 +56,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -74,7 +76,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -98,7 +101,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -117,7 +121,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -141,7 +146,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -160,7 +166,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js index a6265063fdea1..986ba21fdd6fd 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js @@ -64,7 +64,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -112,7 +113,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -166,7 +168,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -225,7 +228,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -289,7 +293,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -365,7 +370,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -419,7 +425,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js index 817b3904f02d3..2a8fccdc53a4c 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js @@ -51,7 +51,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -71,7 +72,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -92,7 +94,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -118,7 +121,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -139,7 +143,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -165,7 +170,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -186,7 +192,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js index a0839d8258da3..e0614ad763a6d 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js @@ -78,7 +78,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -128,7 +129,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -184,7 +186,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -245,7 +248,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -311,7 +315,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -389,7 +394,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -445,7 +451,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.forAwait.es2015.js b/tests/baselines/reference/emitter.forAwait.es2015.js index a76c3e0b54598..b60627291e262 100644 --- a/tests/baselines/reference/emitter.forAwait.es2015.js +++ b/tests/baselines/reference/emitter.forAwait.es2015.js @@ -102,7 +102,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -139,7 +140,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/emitter.forAwait.es5.js b/tests/baselines/reference/emitter.forAwait.es5.js index 14b70e933bba0..a06d79b1dd55b 100644 --- a/tests/baselines/reference/emitter.forAwait.es5.js +++ b/tests/baselines/reference/emitter.forAwait.es5.js @@ -231,7 +231,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } @@ -319,7 +320,8 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; } function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } } - function step(r) { r.done ? settle(c[2], r) : r.value[0] === "yield" ? settle(c[2], { value: r.value[1], done: false }) : Promise.resolve(r.value[1]).then(r.value[0] === "delegate" ? delegate : fulfill, reject); } + function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? _yield : r.value[0] === "delegate" ? delegate : fulfill, reject); } + function _yield(value) { settle(c[2], { value: value, done: false }); } function delegate(r) { step(r.done ? r : { value: ["yield", r.value], done: false }); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } diff --git a/tests/baselines/reference/types.asyncGenerators.esnext.1.symbols b/tests/baselines/reference/types.asyncGenerators.esnext.1.symbols index 0514b4e14243f..1db808e4aed8f 100644 --- a/tests/baselines/reference/types.asyncGenerators.esnext.1.symbols +++ b/tests/baselines/reference/types.asyncGenerators.esnext.1.symbols @@ -15,137 +15,276 @@ async function * inferReturnType3() { async function * inferReturnType4() { >inferReturnType4 : Symbol(inferReturnType4, Decl(types.asyncGenerators.esnext.1.ts, 7, 1)) - yield* [1, 2]; + yield Promise.resolve(1); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) } async function * inferReturnType5() { >inferReturnType5 : Symbol(inferReturnType5, Decl(types.asyncGenerators.esnext.1.ts, 10, 1)) + yield 1; + yield Promise.resolve(2); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +} +async function * inferReturnType6() { +>inferReturnType6 : Symbol(inferReturnType6, Decl(types.asyncGenerators.esnext.1.ts, 14, 1)) + + yield* [1, 2]; +} +async function * inferReturnType7() { +>inferReturnType7 : Symbol(inferReturnType7, Decl(types.asyncGenerators.esnext.1.ts, 17, 1)) + + yield* [Promise.resolve(1)]; +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +} +async function * inferReturnType8() { +>inferReturnType8 : Symbol(inferReturnType8, Decl(types.asyncGenerators.esnext.1.ts, 20, 1)) + yield* (async function * () { yield 1; })(); } const assignability1: () => AsyncIterableIterator = async function * () { ->assignability1 : Symbol(assignability1, Decl(types.asyncGenerators.esnext.1.ts, 14, 5)) +>assignability1 : Symbol(assignability1, Decl(types.asyncGenerators.esnext.1.ts, 24, 5)) >AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield 1; }; const assignability2: () => AsyncIterableIterator = async function * () { ->assignability2 : Symbol(assignability2, Decl(types.asyncGenerators.esnext.1.ts, 17, 5)) +>assignability2 : Symbol(assignability2, Decl(types.asyncGenerators.esnext.1.ts, 27, 5)) >AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) - yield* [1, 2]; + yield Promise.resolve(1); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + }; const assignability3: () => AsyncIterableIterator = async function * () { ->assignability3 : Symbol(assignability3, Decl(types.asyncGenerators.esnext.1.ts, 20, 5)) +>assignability3 : Symbol(assignability3, Decl(types.asyncGenerators.esnext.1.ts, 30, 5)) +>AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [1, 2]; +}; +const assignability4: () => AsyncIterableIterator = async function * () { +>assignability4 : Symbol(assignability4, Decl(types.asyncGenerators.esnext.1.ts, 33, 5)) +>AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [Promise.resolve(1)]; +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + +}; +const assignability5: () => AsyncIterableIterator = async function * () { +>assignability5 : Symbol(assignability5, Decl(types.asyncGenerators.esnext.1.ts, 36, 5)) >AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* (async function * () { yield 1; })(); }; -const assignability4: () => AsyncIterable = async function * () { ->assignability4 : Symbol(assignability4, Decl(types.asyncGenerators.esnext.1.ts, 23, 5)) +const assignability6: () => AsyncIterable = async function * () { +>assignability6 : Symbol(assignability6, Decl(types.asyncGenerators.esnext.1.ts, 39, 5)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield 1; }; -const assignability5: () => AsyncIterable = async function * () { ->assignability5 : Symbol(assignability5, Decl(types.asyncGenerators.esnext.1.ts, 26, 5)) +const assignability7: () => AsyncIterable = async function * () { +>assignability7 : Symbol(assignability7, Decl(types.asyncGenerators.esnext.1.ts, 42, 5)) +>AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield Promise.resolve(1); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + +}; +const assignability8: () => AsyncIterable = async function * () { +>assignability8 : Symbol(assignability8, Decl(types.asyncGenerators.esnext.1.ts, 45, 5)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* [1, 2]; }; -const assignability6: () => AsyncIterable = async function * () { ->assignability6 : Symbol(assignability6, Decl(types.asyncGenerators.esnext.1.ts, 29, 5)) +const assignability9: () => AsyncIterable = async function * () { +>assignability9 : Symbol(assignability9, Decl(types.asyncGenerators.esnext.1.ts, 48, 5)) +>AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [Promise.resolve(1)]; +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + +}; +const assignability10: () => AsyncIterable = async function * () { +>assignability10 : Symbol(assignability10, Decl(types.asyncGenerators.esnext.1.ts, 51, 5)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* (async function * () { yield 1; })(); }; -const assignability7: () => AsyncIterator = async function * () { ->assignability7 : Symbol(assignability7, Decl(types.asyncGenerators.esnext.1.ts, 32, 5)) +const assignability11: () => AsyncIterator = async function * () { +>assignability11 : Symbol(assignability11, Decl(types.asyncGenerators.esnext.1.ts, 54, 5)) >AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield 1; }; -const assignability8: () => AsyncIterator = async function * () { ->assignability8 : Symbol(assignability8, Decl(types.asyncGenerators.esnext.1.ts, 35, 5)) +const assignability12: () => AsyncIterator = async function * () { +>assignability12 : Symbol(assignability12, Decl(types.asyncGenerators.esnext.1.ts, 57, 5)) +>AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield Promise.resolve(1); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + +}; +const assignability13: () => AsyncIterator = async function * () { +>assignability13 : Symbol(assignability13, Decl(types.asyncGenerators.esnext.1.ts, 60, 5)) >AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* [1, 2]; }; -const assignability9: () => AsyncIterator = async function * () { ->assignability9 : Symbol(assignability9, Decl(types.asyncGenerators.esnext.1.ts, 38, 5)) +const assignability14: () => AsyncIterator = async function * () { +>assignability14 : Symbol(assignability14, Decl(types.asyncGenerators.esnext.1.ts, 63, 5)) +>AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [Promise.resolve(1)]; +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) + +}; +const assignability15: () => AsyncIterator = async function * () { +>assignability15 : Symbol(assignability15, Decl(types.asyncGenerators.esnext.1.ts, 66, 5)) >AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* (async function * () { yield 1; })(); }; async function * explicitReturnType1(): AsyncIterableIterator { ->explicitReturnType1 : Symbol(explicitReturnType1, Decl(types.asyncGenerators.esnext.1.ts, 40, 2)) +>explicitReturnType1 : Symbol(explicitReturnType1, Decl(types.asyncGenerators.esnext.1.ts, 68, 2)) >AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield 1; } async function * explicitReturnType2(): AsyncIterableIterator { ->explicitReturnType2 : Symbol(explicitReturnType2, Decl(types.asyncGenerators.esnext.1.ts, 43, 1)) +>explicitReturnType2 : Symbol(explicitReturnType2, Decl(types.asyncGenerators.esnext.1.ts, 71, 1)) >AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) - yield* [1, 2]; + yield Promise.resolve(1); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) } async function * explicitReturnType3(): AsyncIterableIterator { ->explicitReturnType3 : Symbol(explicitReturnType3, Decl(types.asyncGenerators.esnext.1.ts, 46, 1)) +>explicitReturnType3 : Symbol(explicitReturnType3, Decl(types.asyncGenerators.esnext.1.ts, 74, 1)) +>AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [1, 2]; +} +async function * explicitReturnType4(): AsyncIterableIterator { +>explicitReturnType4 : Symbol(explicitReturnType4, Decl(types.asyncGenerators.esnext.1.ts, 77, 1)) +>AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [Promise.resolve(1)]; +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +} +async function * explicitReturnType5(): AsyncIterableIterator { +>explicitReturnType5 : Symbol(explicitReturnType5, Decl(types.asyncGenerators.esnext.1.ts, 80, 1)) >AsyncIterableIterator : Symbol(AsyncIterableIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* (async function * () { yield 1; })(); } -async function * explicitReturnType4(): AsyncIterable { ->explicitReturnType4 : Symbol(explicitReturnType4, Decl(types.asyncGenerators.esnext.1.ts, 49, 1)) +async function * explicitReturnType6(): AsyncIterable { +>explicitReturnType6 : Symbol(explicitReturnType6, Decl(types.asyncGenerators.esnext.1.ts, 83, 1)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield 1; } -async function * explicitReturnType5(): AsyncIterable { ->explicitReturnType5 : Symbol(explicitReturnType5, Decl(types.asyncGenerators.esnext.1.ts, 52, 1)) +async function * explicitReturnType7(): AsyncIterable { +>explicitReturnType7 : Symbol(explicitReturnType7, Decl(types.asyncGenerators.esnext.1.ts, 86, 1)) +>AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield Promise.resolve(1); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +} +async function * explicitReturnType8(): AsyncIterable { +>explicitReturnType8 : Symbol(explicitReturnType8, Decl(types.asyncGenerators.esnext.1.ts, 89, 1)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* [1, 2]; } -async function * explicitReturnType6(): AsyncIterable { ->explicitReturnType6 : Symbol(explicitReturnType6, Decl(types.asyncGenerators.esnext.1.ts, 55, 1)) +async function * explicitReturnType9(): AsyncIterable { +>explicitReturnType9 : Symbol(explicitReturnType9, Decl(types.asyncGenerators.esnext.1.ts, 92, 1)) +>AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [Promise.resolve(1)]; +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +} +async function * explicitReturnType10(): AsyncIterable { +>explicitReturnType10 : Symbol(explicitReturnType10, Decl(types.asyncGenerators.esnext.1.ts, 95, 1)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* (async function * () { yield 1; })(); } -async function * explicitReturnType7(): AsyncIterator { ->explicitReturnType7 : Symbol(explicitReturnType7, Decl(types.asyncGenerators.esnext.1.ts, 58, 1)) +async function * explicitReturnType11(): AsyncIterator { +>explicitReturnType11 : Symbol(explicitReturnType11, Decl(types.asyncGenerators.esnext.1.ts, 98, 1)) >AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield 1; } -async function * explicitReturnType8(): AsyncIterator { ->explicitReturnType8 : Symbol(explicitReturnType8, Decl(types.asyncGenerators.esnext.1.ts, 61, 1)) +async function * explicitReturnType12(): AsyncIterator { +>explicitReturnType12 : Symbol(explicitReturnType12, Decl(types.asyncGenerators.esnext.1.ts, 101, 1)) +>AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield Promise.resolve(1); +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +} +async function * explicitReturnType13(): AsyncIterator { +>explicitReturnType13 : Symbol(explicitReturnType13, Decl(types.asyncGenerators.esnext.1.ts, 104, 1)) >AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* [1, 2]; } -async function * explicitReturnType9(): AsyncIterator { ->explicitReturnType9 : Symbol(explicitReturnType9, Decl(types.asyncGenerators.esnext.1.ts, 64, 1)) +async function * explicitReturnType14(): AsyncIterator { +>explicitReturnType14 : Symbol(explicitReturnType14, Decl(types.asyncGenerators.esnext.1.ts, 107, 1)) +>AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) + + yield* [Promise.resolve(1)]; +>Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) +>resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) +} +async function * explicitReturnType15(): AsyncIterator { +>explicitReturnType15 : Symbol(explicitReturnType15, Decl(types.asyncGenerators.esnext.1.ts, 110, 1)) >AsyncIterator : Symbol(AsyncIterator, Decl(lib.esnext.asynciterable.d.ts, --, --)) yield* (async function * () { yield 1; })(); } -async function * explicitReturnType10(): {} { ->explicitReturnType10 : Symbol(explicitReturnType10, Decl(types.asyncGenerators.esnext.1.ts, 67, 1)) +async function * explicitReturnType16(): {} { +>explicitReturnType16 : Symbol(explicitReturnType16, Decl(types.asyncGenerators.esnext.1.ts, 113, 1)) yield 1; } async function * awaitedType1() { ->awaitedType1 : Symbol(awaitedType1, Decl(types.asyncGenerators.esnext.1.ts, 70, 1)) +>awaitedType1 : Symbol(awaitedType1, Decl(types.asyncGenerators.esnext.1.ts, 116, 1)) const x = await 1; ->x : Symbol(x, Decl(types.asyncGenerators.esnext.1.ts, 72, 9)) +>x : Symbol(x, Decl(types.asyncGenerators.esnext.1.ts, 118, 9)) } async function * awaitedType2() { ->awaitedType2 : Symbol(awaitedType2, Decl(types.asyncGenerators.esnext.1.ts, 73, 1)) +>awaitedType2 : Symbol(awaitedType2, Decl(types.asyncGenerators.esnext.1.ts, 119, 1)) const x = await Promise.resolve(1); ->x : Symbol(x, Decl(types.asyncGenerators.esnext.1.ts, 75, 9)) +>x : Symbol(x, Decl(types.asyncGenerators.esnext.1.ts, 121, 9)) >Promise.resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) >Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --)) >resolve : Symbol(PromiseConstructor.resolve, Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --)) diff --git a/tests/baselines/reference/types.asyncGenerators.esnext.1.types b/tests/baselines/reference/types.asyncGenerators.esnext.1.types index a788f2d349fa5..1a72da228e762 100644 --- a/tests/baselines/reference/types.asyncGenerators.esnext.1.types +++ b/tests/baselines/reference/types.asyncGenerators.esnext.1.types @@ -18,14 +18,52 @@ async function * inferReturnType3() { async function * inferReturnType4() { >inferReturnType4 : () => AsyncIterableIterator + yield Promise.resolve(1); +>yield Promise.resolve(1) : any +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * inferReturnType5() { +>inferReturnType5 : () => AsyncIterableIterator + + yield 1; +>yield 1 : any +>1 : 1 + + yield Promise.resolve(2); +>yield Promise.resolve(2) : any +>Promise.resolve(2) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>2 : 2 +} +async function * inferReturnType6() { +>inferReturnType6 : () => AsyncIterableIterator + yield* [1, 2]; >yield* [1, 2] : any >[1, 2] : number[] >1 : 1 >2 : 2 } -async function * inferReturnType5() { ->inferReturnType5 : () => AsyncIterableIterator<1> +async function * inferReturnType7() { +>inferReturnType7 : () => AsyncIterableIterator + + yield* [Promise.resolve(1)]; +>yield* [Promise.resolve(1)] : any +>[Promise.resolve(1)] : Promise[] +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * inferReturnType8() { +>inferReturnType8 : () => AsyncIterableIterator<1> yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : any @@ -48,6 +86,20 @@ const assignability1: () => AsyncIterableIterator = async function * () const assignability2: () => AsyncIterableIterator = async function * () { >assignability2 : () => AsyncIterableIterator >AsyncIterableIterator : AsyncIterableIterator +>async function * () { yield Promise.resolve(1);} : () => AsyncIterableIterator + + yield Promise.resolve(1); +>yield Promise.resolve(1) : any +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 + +}; +const assignability3: () => AsyncIterableIterator = async function * () { +>assignability3 : () => AsyncIterableIterator +>AsyncIterableIterator : AsyncIterableIterator >async function * () { yield* [1, 2];} : () => AsyncIterableIterator yield* [1, 2]; @@ -57,8 +109,23 @@ const assignability2: () => AsyncIterableIterator = async function * () >2 : 2 }; -const assignability3: () => AsyncIterableIterator = async function * () { ->assignability3 : () => AsyncIterableIterator +const assignability4: () => AsyncIterableIterator = async function * () { +>assignability4 : () => AsyncIterableIterator +>AsyncIterableIterator : AsyncIterableIterator +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncIterableIterator + + yield* [Promise.resolve(1)]; +>yield* [Promise.resolve(1)] : any +>[Promise.resolve(1)] : Promise[] +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 + +}; +const assignability5: () => AsyncIterableIterator = async function * () { +>assignability5 : () => AsyncIterableIterator >AsyncIterableIterator : AsyncIterableIterator >async function * () { yield* (async function * () { yield 1; })();} : () => AsyncIterableIterator<1> @@ -71,8 +138,8 @@ const assignability3: () => AsyncIterableIterator = async function * () >1 : 1 }; -const assignability4: () => AsyncIterable = async function * () { ->assignability4 : () => AsyncIterable +const assignability6: () => AsyncIterable = async function * () { +>assignability6 : () => AsyncIterable >AsyncIterable : AsyncIterable >async function * () { yield 1;} : () => AsyncIterableIterator<1> @@ -81,8 +148,22 @@ const assignability4: () => AsyncIterable = async function * () { >1 : 1 }; -const assignability5: () => AsyncIterable = async function * () { ->assignability5 : () => AsyncIterable +const assignability7: () => AsyncIterable = async function * () { +>assignability7 : () => AsyncIterable +>AsyncIterable : AsyncIterable +>async function * () { yield Promise.resolve(1);} : () => AsyncIterableIterator + + yield Promise.resolve(1); +>yield Promise.resolve(1) : any +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 + +}; +const assignability8: () => AsyncIterable = async function * () { +>assignability8 : () => AsyncIterable >AsyncIterable : AsyncIterable >async function * () { yield* [1, 2];} : () => AsyncIterableIterator @@ -93,8 +174,23 @@ const assignability5: () => AsyncIterable = async function * () { >2 : 2 }; -const assignability6: () => AsyncIterable = async function * () { ->assignability6 : () => AsyncIterable +const assignability9: () => AsyncIterable = async function * () { +>assignability9 : () => AsyncIterable +>AsyncIterable : AsyncIterable +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncIterableIterator + + yield* [Promise.resolve(1)]; +>yield* [Promise.resolve(1)] : any +>[Promise.resolve(1)] : Promise[] +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 + +}; +const assignability10: () => AsyncIterable = async function * () { +>assignability10 : () => AsyncIterable >AsyncIterable : AsyncIterable >async function * () { yield* (async function * () { yield 1; })();} : () => AsyncIterableIterator<1> @@ -107,8 +203,8 @@ const assignability6: () => AsyncIterable = async function * () { >1 : 1 }; -const assignability7: () => AsyncIterator = async function * () { ->assignability7 : () => AsyncIterator +const assignability11: () => AsyncIterator = async function * () { +>assignability11 : () => AsyncIterator >AsyncIterator : AsyncIterator >async function * () { yield 1;} : () => AsyncIterableIterator<1> @@ -117,8 +213,22 @@ const assignability7: () => AsyncIterator = async function * () { >1 : 1 }; -const assignability8: () => AsyncIterator = async function * () { ->assignability8 : () => AsyncIterator +const assignability12: () => AsyncIterator = async function * () { +>assignability12 : () => AsyncIterator +>AsyncIterator : AsyncIterator +>async function * () { yield Promise.resolve(1);} : () => AsyncIterableIterator + + yield Promise.resolve(1); +>yield Promise.resolve(1) : any +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 + +}; +const assignability13: () => AsyncIterator = async function * () { +>assignability13 : () => AsyncIterator >AsyncIterator : AsyncIterator >async function * () { yield* [1, 2];} : () => AsyncIterableIterator @@ -129,8 +239,23 @@ const assignability8: () => AsyncIterator = async function * () { >2 : 2 }; -const assignability9: () => AsyncIterator = async function * () { ->assignability9 : () => AsyncIterator +const assignability14: () => AsyncIterator = async function * () { +>assignability14 : () => AsyncIterator +>AsyncIterator : AsyncIterator +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncIterableIterator + + yield* [Promise.resolve(1)]; +>yield* [Promise.resolve(1)] : any +>[Promise.resolve(1)] : Promise[] +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 + +}; +const assignability15: () => AsyncIterator = async function * () { +>assignability15 : () => AsyncIterator >AsyncIterator : AsyncIterator >async function * () { yield* (async function * () { yield 1; })();} : () => AsyncIterableIterator<1> @@ -153,6 +278,18 @@ async function * explicitReturnType1(): AsyncIterableIterator { } async function * explicitReturnType2(): AsyncIterableIterator { >explicitReturnType2 : () => AsyncIterableIterator +>AsyncIterableIterator : AsyncIterableIterator + + yield Promise.resolve(1); +>yield Promise.resolve(1) : any +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * explicitReturnType3(): AsyncIterableIterator { +>explicitReturnType3 : () => AsyncIterableIterator >AsyncIterableIterator : AsyncIterableIterator yield* [1, 2]; @@ -161,8 +298,21 @@ async function * explicitReturnType2(): AsyncIterableIterator { >1 : 1 >2 : 2 } -async function * explicitReturnType3(): AsyncIterableIterator { ->explicitReturnType3 : () => AsyncIterableIterator +async function * explicitReturnType4(): AsyncIterableIterator { +>explicitReturnType4 : () => AsyncIterableIterator +>AsyncIterableIterator : AsyncIterableIterator + + yield* [Promise.resolve(1)]; +>yield* [Promise.resolve(1)] : any +>[Promise.resolve(1)] : Promise[] +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * explicitReturnType5(): AsyncIterableIterator { +>explicitReturnType5 : () => AsyncIterableIterator >AsyncIterableIterator : AsyncIterableIterator yield* (async function * () { yield 1; })(); @@ -173,16 +323,28 @@ async function * explicitReturnType3(): AsyncIterableIterator { >yield 1 : any >1 : 1 } -async function * explicitReturnType4(): AsyncIterable { ->explicitReturnType4 : () => AsyncIterable +async function * explicitReturnType6(): AsyncIterable { +>explicitReturnType6 : () => AsyncIterable >AsyncIterable : AsyncIterable yield 1; >yield 1 : any >1 : 1 } -async function * explicitReturnType5(): AsyncIterable { ->explicitReturnType5 : () => AsyncIterable +async function * explicitReturnType7(): AsyncIterable { +>explicitReturnType7 : () => AsyncIterable +>AsyncIterable : AsyncIterable + + yield Promise.resolve(1); +>yield Promise.resolve(1) : any +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * explicitReturnType8(): AsyncIterable { +>explicitReturnType8 : () => AsyncIterable >AsyncIterable : AsyncIterable yield* [1, 2]; @@ -191,8 +353,21 @@ async function * explicitReturnType5(): AsyncIterable { >1 : 1 >2 : 2 } -async function * explicitReturnType6(): AsyncIterable { ->explicitReturnType6 : () => AsyncIterable +async function * explicitReturnType9(): AsyncIterable { +>explicitReturnType9 : () => AsyncIterable +>AsyncIterable : AsyncIterable + + yield* [Promise.resolve(1)]; +>yield* [Promise.resolve(1)] : any +>[Promise.resolve(1)] : Promise[] +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * explicitReturnType10(): AsyncIterable { +>explicitReturnType10 : () => AsyncIterable >AsyncIterable : AsyncIterable yield* (async function * () { yield 1; })(); @@ -203,16 +378,28 @@ async function * explicitReturnType6(): AsyncIterable { >yield 1 : any >1 : 1 } -async function * explicitReturnType7(): AsyncIterator { ->explicitReturnType7 : () => AsyncIterator +async function * explicitReturnType11(): AsyncIterator { +>explicitReturnType11 : () => AsyncIterator >AsyncIterator : AsyncIterator yield 1; >yield 1 : any >1 : 1 } -async function * explicitReturnType8(): AsyncIterator { ->explicitReturnType8 : () => AsyncIterator +async function * explicitReturnType12(): AsyncIterator { +>explicitReturnType12 : () => AsyncIterator +>AsyncIterator : AsyncIterator + + yield Promise.resolve(1); +>yield Promise.resolve(1) : any +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * explicitReturnType13(): AsyncIterator { +>explicitReturnType13 : () => AsyncIterator >AsyncIterator : AsyncIterator yield* [1, 2]; @@ -221,8 +408,21 @@ async function * explicitReturnType8(): AsyncIterator { >1 : 1 >2 : 2 } -async function * explicitReturnType9(): AsyncIterator { ->explicitReturnType9 : () => AsyncIterator +async function * explicitReturnType14(): AsyncIterator { +>explicitReturnType14 : () => AsyncIterator +>AsyncIterator : AsyncIterator + + yield* [Promise.resolve(1)]; +>yield* [Promise.resolve(1)] : any +>[Promise.resolve(1)] : Promise[] +>Promise.resolve(1) : Promise +>Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>Promise : PromiseConstructor +>resolve : { (value: T | PromiseLike): Promise; (): Promise; } +>1 : 1 +} +async function * explicitReturnType15(): AsyncIterator { +>explicitReturnType15 : () => AsyncIterator >AsyncIterator : AsyncIterator yield* (async function * () { yield 1; })(); @@ -233,8 +433,8 @@ async function * explicitReturnType9(): AsyncIterator { >yield 1 : any >1 : 1 } -async function * explicitReturnType10(): {} { ->explicitReturnType10 : () => {} +async function * explicitReturnType16(): {} { +>explicitReturnType16 : () => {} yield 1; >yield 1 : any diff --git a/tests/baselines/reference/types.asyncGenerators.esnext.2.errors.txt b/tests/baselines/reference/types.asyncGenerators.esnext.2.errors.txt index 92733c18640d5..64d7980578c28 100644 --- a/tests/baselines/reference/types.asyncGenerators.esnext.2.errors.txt +++ b/tests/baselines/reference/types.asyncGenerators.esnext.2.errors.txt @@ -1,13 +1,14 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(2,12): error TS2504: Type must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(7,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterableIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(8,12): error TS2504: Type must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(10,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterableIterator'. Type 'AsyncIterableIterator<"a">' is not assignable to type 'AsyncIterableIterator'. Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(10,7): error TS2322: Type '() => AsyncIterableIterator' is not assignable to type '() => AsyncIterableIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(13,7): error TS2322: Type '() => AsyncIterableIterator' is not assignable to type '() => AsyncIterableIterator'. Type 'AsyncIterableIterator' is not assignable to type 'AsyncIterableIterator'. Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(13,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterableIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(16,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterableIterator'. Type 'AsyncIterableIterator<"a">' is not assignable to type 'AsyncIterableIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(16,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterable'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(19,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterable'. Type 'AsyncIterableIterator<"a">' is not assignable to type 'AsyncIterable'. Types of property '[Symbol.asyncIterator]' are incompatible. Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterator'. @@ -17,7 +18,7 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts( Type 'Promise>' is not assignable to type 'Promise>'. Type 'IteratorResult<"a">' is not assignable to type 'IteratorResult'. Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(19,7): error TS2322: Type '() => AsyncIterableIterator' is not assignable to type '() => AsyncIterable'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(22,7): error TS2322: Type '() => AsyncIterableIterator' is not assignable to type '() => AsyncIterable'. Type 'AsyncIterableIterator' is not assignable to type 'AsyncIterable'. Types of property '[Symbol.asyncIterator]' are incompatible. Type '() => AsyncIterableIterator' is not assignable to type '() => AsyncIterator'. @@ -27,36 +28,36 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts( Type 'Promise>' is not assignable to type 'Promise>'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(22,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterable'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(25,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterable'. Type 'AsyncIterableIterator<"a">' is not assignable to type 'AsyncIterable'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(25,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(28,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterator'. Type 'AsyncIterableIterator<"a">' is not assignable to type 'AsyncIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(28,7): error TS2322: Type '() => AsyncIterableIterator' is not assignable to type '() => AsyncIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(31,7): error TS2322: Type '() => AsyncIterableIterator' is not assignable to type '() => AsyncIterator'. Type 'AsyncIterableIterator' is not assignable to type 'AsyncIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(31,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(34,7): error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterator'. Type 'AsyncIterableIterator<"a">' is not assignable to type 'AsyncIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(35,11): error TS2322: Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(38,12): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(41,12): error TS2322: Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(44,11): error TS2322: Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(47,12): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(50,12): error TS2322: Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(53,11): error TS2322: Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(56,12): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(59,12): error TS2322: Type '"a"' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(61,42): error TS2322: Type 'AsyncIterableIterator' is not assignable to type 'IterableIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(38,11): error TS2322: Type '"a"' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(41,12): error TS2322: Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(44,12): error TS2322: Type '"a"' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(47,11): error TS2322: Type '"a"' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(50,12): error TS2322: Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(53,12): error TS2322: Type '"a"' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(56,11): error TS2322: Type '"a"' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(59,12): error TS2322: Type 'string' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(62,12): error TS2322: Type '"a"' is not assignable to type 'number'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(64,42): error TS2322: Type 'AsyncIterableIterator' is not assignable to type 'IterableIterator'. Property '[Symbol.iterator]' is missing in type 'AsyncIterableIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(64,42): error TS2322: Type 'AsyncIterableIterator' is not assignable to type 'Iterable'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(67,42): error TS2322: Type 'AsyncIterableIterator' is not assignable to type 'Iterable'. Property '[Symbol.iterator]' is missing in type 'AsyncIterableIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(67,42): error TS2322: Type 'AsyncIterableIterator' is not assignable to type 'Iterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(70,42): error TS2322: Type 'AsyncIterableIterator' is not assignable to type 'Iterator'. Types of property 'next' are incompatible. Type '(value?: any) => Promise>' is not assignable to type '(value?: any) => IteratorResult'. Type 'Promise>' is not assignable to type 'IteratorResult'. Property 'done' is missing in type 'Promise>'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(71,12): error TS2504: Type must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts(74,12): error TS2504: Type must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -==== tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts (23 errors) ==== +==== tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts (24 errors) ==== async function * inferReturnType1() { yield* {}; ~~ @@ -65,6 +66,11 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts( async function * inferReturnType2() { yield* inferReturnType2(); } + async function * inferReturnType3() { + yield* Promise.resolve([1, 2]); + ~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2504: Type must have a '[Symbol.asyncIterator]()' method that returns an async iterator. + } const assignability1: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ !!! error TS2322: Type '() => AsyncIterableIterator<"a">' is not assignable to type '() => AsyncIterableIterator'. diff --git a/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.1.ts b/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.1.ts index 3ff45500c2640..1d7ebd17807b9 100644 --- a/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.1.ts +++ b/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.1.ts @@ -10,66 +10,112 @@ async function * inferReturnType3() { yield 1; } async function * inferReturnType4() { - yield* [1, 2]; + yield Promise.resolve(1); } async function * inferReturnType5() { + yield 1; + yield Promise.resolve(2); +} +async function * inferReturnType6() { + yield* [1, 2]; +} +async function * inferReturnType7() { + yield* [Promise.resolve(1)]; +} +async function * inferReturnType8() { yield* (async function * () { yield 1; })(); } const assignability1: () => AsyncIterableIterator = async function * () { yield 1; }; const assignability2: () => AsyncIterableIterator = async function * () { - yield* [1, 2]; + yield Promise.resolve(1); }; const assignability3: () => AsyncIterableIterator = async function * () { + yield* [1, 2]; +}; +const assignability4: () => AsyncIterableIterator = async function * () { + yield* [Promise.resolve(1)]; +}; +const assignability5: () => AsyncIterableIterator = async function * () { yield* (async function * () { yield 1; })(); }; -const assignability4: () => AsyncIterable = async function * () { +const assignability6: () => AsyncIterable = async function * () { yield 1; }; -const assignability5: () => AsyncIterable = async function * () { +const assignability7: () => AsyncIterable = async function * () { + yield Promise.resolve(1); +}; +const assignability8: () => AsyncIterable = async function * () { yield* [1, 2]; }; -const assignability6: () => AsyncIterable = async function * () { +const assignability9: () => AsyncIterable = async function * () { + yield* [Promise.resolve(1)]; +}; +const assignability10: () => AsyncIterable = async function * () { yield* (async function * () { yield 1; })(); }; -const assignability7: () => AsyncIterator = async function * () { +const assignability11: () => AsyncIterator = async function * () { yield 1; }; -const assignability8: () => AsyncIterator = async function * () { +const assignability12: () => AsyncIterator = async function * () { + yield Promise.resolve(1); +}; +const assignability13: () => AsyncIterator = async function * () { yield* [1, 2]; }; -const assignability9: () => AsyncIterator = async function * () { +const assignability14: () => AsyncIterator = async function * () { + yield* [Promise.resolve(1)]; +}; +const assignability15: () => AsyncIterator = async function * () { yield* (async function * () { yield 1; })(); }; async function * explicitReturnType1(): AsyncIterableIterator { yield 1; } async function * explicitReturnType2(): AsyncIterableIterator { - yield* [1, 2]; + yield Promise.resolve(1); } async function * explicitReturnType3(): AsyncIterableIterator { + yield* [1, 2]; +} +async function * explicitReturnType4(): AsyncIterableIterator { + yield* [Promise.resolve(1)]; +} +async function * explicitReturnType5(): AsyncIterableIterator { yield* (async function * () { yield 1; })(); } -async function * explicitReturnType4(): AsyncIterable { +async function * explicitReturnType6(): AsyncIterable { yield 1; } -async function * explicitReturnType5(): AsyncIterable { +async function * explicitReturnType7(): AsyncIterable { + yield Promise.resolve(1); +} +async function * explicitReturnType8(): AsyncIterable { yield* [1, 2]; } -async function * explicitReturnType6(): AsyncIterable { +async function * explicitReturnType9(): AsyncIterable { + yield* [Promise.resolve(1)]; +} +async function * explicitReturnType10(): AsyncIterable { yield* (async function * () { yield 1; })(); } -async function * explicitReturnType7(): AsyncIterator { +async function * explicitReturnType11(): AsyncIterator { yield 1; } -async function * explicitReturnType8(): AsyncIterator { +async function * explicitReturnType12(): AsyncIterator { + yield Promise.resolve(1); +} +async function * explicitReturnType13(): AsyncIterator { yield* [1, 2]; } -async function * explicitReturnType9(): AsyncIterator { +async function * explicitReturnType14(): AsyncIterator { + yield* [Promise.resolve(1)]; +} +async function * explicitReturnType15(): AsyncIterator { yield* (async function * () { yield 1; })(); } -async function * explicitReturnType10(): {} { +async function * explicitReturnType16(): {} { yield 1; } async function * awaitedType1() { diff --git a/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts b/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts index 848093de182d8..3252189b79853 100644 --- a/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts +++ b/tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.esnext.2.ts @@ -7,6 +7,9 @@ async function * inferReturnType1() { async function * inferReturnType2() { yield* inferReturnType2(); } +async function * inferReturnType3() { + yield* Promise.resolve([1, 2]); +} const assignability1: () => AsyncIterableIterator = async function * () { yield "a"; };