From 3e4279195f3eabdf1a473e0acaa942175ad81d7c Mon Sep 17 00:00:00 2001 From: Artem Tyurin Date: Fri, 4 May 2018 12:15:58 +0200 Subject: [PATCH 1/5] Resolve promise inside async generator --- src/compiler/transformers/esnext.ts | 9 ++- .../reference/asyncImportNestedYield.js | 9 ++- ...ter.asyncGenerators.classMethods.es2015.js | 81 ++++++++++++++++--- ...mitter.asyncGenerators.classMethods.es5.js | 81 ++++++++++++++++--- ...cGenerators.functionDeclarations.es2015.js | 63 +++++++++++++-- ...syncGenerators.functionDeclarations.es5.js | 63 +++++++++++++-- ...ncGenerators.functionExpressions.es2015.js | 63 +++++++++++++-- ...asyncGenerators.functionExpressions.es5.js | 63 +++++++++++++-- ...cGenerators.objectLiteralMethods.es2015.js | 63 +++++++++++++-- ...syncGenerators.objectLiteralMethods.es5.js | 63 +++++++++++++-- .../reference/emitter.forAwait.es2015.js | 27 ++++++- .../reference/emitter.forAwait.es2017.js | 27 ++++++- .../reference/emitter.forAwait.es5.js | 27 ++++++- 13 files changed, 568 insertions(+), 71 deletions(-) diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index 68861a5bb43f5..e60a39eecd2c2 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -906,7 +906,14 @@ namespace ts { return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/asyncImportNestedYield.js b/tests/baselines/reference/asyncImportNestedYield.js index 0dd76a13ace8c..4c83c6caf1710 100644 --- a/tests/baselines/reference/asyncImportNestedYield.js +++ b/tests/baselines/reference/asyncImportNestedYield.js @@ -38,7 +38,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js index 2de9f939ba1c6..639e56f7b7e9d 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js @@ -68,7 +68,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -87,7 +94,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -107,7 +121,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -137,7 +158,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -157,7 +185,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -187,7 +222,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -207,7 +249,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -227,7 +276,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -249,7 +305,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js index a91120c4079df..359c86683ddbe 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js @@ -95,7 +95,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -147,7 +154,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -205,7 +219,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -273,7 +294,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -342,7 +370,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -428,7 +463,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -486,7 +528,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -538,7 +587,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -603,7 +659,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js index d0bf1c902c0ab..f8d5b9b158e3c 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js @@ -37,7 +37,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -54,7 +61,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -72,7 +86,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -100,7 +121,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -118,7 +146,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -146,7 +181,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -164,7 +206,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js index 70cfee3254249..9ca02ccdfaa73 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js @@ -64,7 +64,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -111,7 +118,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -164,7 +178,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -227,7 +248,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -291,7 +319,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -372,7 +407,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -425,7 +467,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js index 909196952f004..a25653a10fd6c 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js @@ -37,7 +37,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -54,7 +61,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -72,7 +86,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -100,7 +121,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -118,7 +146,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -146,7 +181,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -164,7 +206,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js index c9dff58c7ce1b..22a934c6f6711 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js @@ -64,7 +64,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -111,7 +118,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -164,7 +178,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -227,7 +248,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -291,7 +319,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -372,7 +407,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -425,7 +467,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js index 99caa9d3ad3f5..9cce459c9da45 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js @@ -51,7 +51,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -70,7 +77,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -90,7 +104,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -120,7 +141,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -140,7 +168,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -170,7 +205,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -190,7 +232,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js index 76d74351923f2..6b50d4c083489 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js @@ -78,7 +78,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -127,7 +134,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -182,7 +196,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -247,7 +268,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -313,7 +341,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -396,7 +431,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -451,7 +493,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.forAwait.es2015.js b/tests/baselines/reference/emitter.forAwait.es2015.js index 6b6bdd739fded..ade1964638f9c 100644 --- a/tests/baselines/reference/emitter.forAwait.es2015.js +++ b/tests/baselines/reference/emitter.forAwait.es2015.js @@ -118,7 +118,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -154,7 +161,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -224,7 +238,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.forAwait.es2017.js b/tests/baselines/reference/emitter.forAwait.es2017.js index 8eb2144255894..df401094158c1 100644 --- a/tests/baselines/reference/emitter.forAwait.es2017.js +++ b/tests/baselines/reference/emitter.forAwait.es2017.js @@ -98,7 +98,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -134,7 +141,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -194,7 +208,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.forAwait.es5.js b/tests/baselines/reference/emitter.forAwait.es5.js index b4ea4ddcf5484..d847c216bb246 100644 --- a/tests/baselines/reference/emitter.forAwait.es5.js +++ b/tests/baselines/reference/emitter.forAwait.es5.js @@ -241,7 +241,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -325,7 +332,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -490,7 +504,14 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function step(r) { + if (r.value instanceof __await) { + Promise.resolve(r.value.v).then(fulfill, reject); + } else if (r.value instanceof Promise) { + r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); + } else { settle(q[0][2], r); } + } + function resolve(r, rv) { return { value: rv, done: r.done }; } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } From fa94fb079c42f406eaa936469b9ac66ca2bc614a Mon Sep 17 00:00:00 2001 From: Artem Tyurin Date: Sat, 5 May 2018 02:44:35 +0200 Subject: [PATCH 2/5] Always yield await in async generator --- src/compiler/transformers/esnext.ts | 50 +++++--- .../reference/asyncImportNestedYield.js | 7 +- ...ter.asyncGenerators.classMethods.es2015.js | 4 +- ...mitter.asyncGenerators.classMethods.es5.js | 10 +- ...cGenerators.functionDeclarations.es2015.js | 4 +- ...syncGenerators.functionDeclarations.es5.js | 10 +- ...ncGenerators.functionExpressions.es2015.js | 4 +- ...asyncGenerators.functionExpressions.es5.js | 10 +- ...cGenerators.objectLiteralMethods.es2015.js | 4 +- ...syncGenerators.objectLiteralMethods.es5.js | 10 +- .../reference/emitter.forAwait.es2015.js | 6 +- .../reference/emitter.forAwait.es2017.js | 6 +- .../reference/emitter.forAwait.es5.js | 111 +++++++++--------- ...mportHelpersNoHelpersForAsyncGenerators.js | 9 +- 14 files changed, 137 insertions(+), 108 deletions(-) diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index e60a39eecd2c2..fde07b6323e42 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -118,28 +118,44 @@ namespace ts { } function visitYieldExpression(node: YieldExpression) { - if (enclosingFunctionFlags & FunctionFlags.Async && enclosingFunctionFlags & FunctionFlags.Generator && node.asteriskToken) { - const expression = visitNode(node.expression, visitor, isExpression); - return setOriginalNode( - setTextRange( - createYield( - createAwaitHelper(context, - updateYield( - node, - node.asteriskToken, - createAsyncDelegatorHelper( - context, - createAsyncValuesHelper(context, expression, expression), - expression + if (enclosingFunctionFlags & FunctionFlags.Async && enclosingFunctionFlags & FunctionFlags.Generator) { + if (node.asteriskToken) { + const expression = visitNode(node.expression, visitor, isExpression); + + return setOriginalNode( + setTextRange( + createYield( + createAwaitHelper(context, + updateYield( + node, + node.asteriskToken, + createAsyncDelegatorHelper( + context, + createAsyncValuesHelper(context, expression, expression), + expression + ) ) ) - ) + ), + node ), node - ), - node - ); + ); + } + + if (node.expression && node.expression.kind !== SyntaxKind.AwaitExpression) { + return setOriginalNode( + setTextRange( + createYield( + createDownlevelAwait(node.expression) + ), + node + ), + node + ); + } } + return visitEachChild(node, visitor, context); } diff --git a/tests/baselines/reference/asyncImportNestedYield.js b/tests/baselines/reference/asyncImportNestedYield.js index 4c83c6caf1710..ac27e5811869b 100644 --- a/tests/baselines/reference/asyncImportNestedYield.js +++ b/tests/baselines/reference/asyncImportNestedYield.js @@ -54,9 +54,10 @@ function foo() { return __asyncGenerator(this, arguments, function foo_1() { return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, "foo"]; - case 1: return [4 /*yield*/, __await.apply(void 0, [Promise.resolve().then(function () { return require(_a.sent()); })])]; - case 2: + case 0: return [4 /*yield*/, __await("foo")]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: return [4 /*yield*/, __await.apply(void 0, [Promise.resolve().then(function () { return require(_a.sent()); })])]; + case 3: Promise.resolve().then(function () { return require((_a.sent())["default"]); }); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js index 639e56f7b7e9d..0eb63ae638f6b 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js @@ -136,7 +136,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar class C3 { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield 1; + const x = yield yield __await(1); }); } } @@ -210,7 +210,7 @@ var __asyncDelegator = (this && this.__asyncDelegator) || function (o) { class C5 { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield 1; }); })()))); + const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield yield __await(1); }); })()))); }); } } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js index 359c86683ddbe..827e1e535df41 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js @@ -239,8 +239,9 @@ var C3 = /** @class */ (function () { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } @@ -412,8 +413,9 @@ var C5 = /** @class */ (function () { switch (_a.label) { case 0: return [5 /*yield**/, __values(__asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function () { return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js index f8d5b9b158e3c..f3cde3c01ea2f 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js @@ -100,7 +100,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar }; function f3() { return __asyncGenerator(this, arguments, function* f3_1() { - const x = yield 1; + const x = yield yield __await(1); }); } //// [F4.js] @@ -170,7 +170,7 @@ var __asyncDelegator = (this && this.__asyncDelegator) || function (o) { }; function f5() { return __asyncGenerator(this, arguments, function* f5_1() { - const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield 1; }); })()))); + const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield yield __await(1); }); })()))); }); } //// [F6.js] diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js index 9ca02ccdfaa73..4895ff855e603 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js @@ -195,8 +195,9 @@ function f3() { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } @@ -358,8 +359,9 @@ function f5() { switch (_a.label) { case 0: return [5 /*yield**/, __values(__asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function () { return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js index a25653a10fd6c..fb5577ef8d180 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js @@ -100,7 +100,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar }; const f3 = function () { return __asyncGenerator(this, arguments, function* () { - const x = yield 1; + const x = yield yield __await(1); }); }; //// [F4.js] @@ -170,7 +170,7 @@ var __asyncDelegator = (this && this.__asyncDelegator) || function (o) { }; const f5 = function () { return __asyncGenerator(this, arguments, function* () { - const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield 1; }); })()))); + const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield yield __await(1); }); })()))); }); }; //// [F6.js] diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js index 22a934c6f6711..25d688d5115ea 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js @@ -195,8 +195,9 @@ var f3 = function () { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } @@ -358,8 +359,9 @@ var f5 = function () { switch (_a.label) { case 0: return [5 /*yield**/, __values(__asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function () { return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js index 9cce459c9da45..025713c1d1c99 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js @@ -119,7 +119,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar const o3 = { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield 1; + const x = yield yield __await(1); }); } }; @@ -193,7 +193,7 @@ var __asyncDelegator = (this && this.__asyncDelegator) || function (o) { const o5 = { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield 1; }); })()))); + const x = yield __await(yield* __asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function* () { yield yield __await(1); }); })()))); }); } }; diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js index 6b50d4c083489..32d6ce06c4628 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js @@ -214,8 +214,9 @@ var o3 = { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } @@ -381,8 +382,9 @@ var o5 = { switch (_a.label) { case 0: return [5 /*yield**/, __values(__asyncDelegator(__asyncValues((function () { return __asyncGenerator(this, arguments, function () { return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/, 1]; - case 1: + case 0: return [4 /*yield*/, __await(1)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.forAwait.es2015.js b/tests/baselines/reference/emitter.forAwait.es2015.js index ade1964638f9c..5f84389cd4e65 100644 --- a/tests/baselines/reference/emitter.forAwait.es2015.js +++ b/tests/baselines/reference/emitter.forAwait.es2015.js @@ -135,7 +135,7 @@ function f3() { let y; try { for (var y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), !y_1_1.done;) { - const x = yield __await(y_1_1.value); + const x = yield yield __await(__await(y_1_1.value)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -178,7 +178,7 @@ function f4() { let x, y; try { for (var y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), !y_1_1.done;) { - x = yield __await(y_1_1.value); + x = yield yield __await(__await(y_1_1.value)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -256,7 +256,7 @@ function f6() { let y; try { outer: for (var y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), !y_1_1.done;) { - const x = yield __await(y_1_1.value); + const x = yield yield __await(__await(y_1_1.value)); continue outer; } } diff --git a/tests/baselines/reference/emitter.forAwait.es2017.js b/tests/baselines/reference/emitter.forAwait.es2017.js index df401094158c1..525c717637260 100644 --- a/tests/baselines/reference/emitter.forAwait.es2017.js +++ b/tests/baselines/reference/emitter.forAwait.es2017.js @@ -115,7 +115,7 @@ function f3() { let y; try { for (var y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), !y_1_1.done;) { - const x = yield __await(y_1_1.value); + const x = yield yield __await(__await(y_1_1.value)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -158,7 +158,7 @@ function f4() { let x, y; try { for (var y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), !y_1_1.done;) { - x = yield __await(y_1_1.value); + x = yield yield __await(__await(y_1_1.value)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -226,7 +226,7 @@ function f6() { let y; try { outer: for (var y_1 = __asyncValues(y), y_1_1; y_1_1 = yield __await(y_1.next()), !y_1_1.done;) { - const x = yield __await(y_1_1.value); + const x = yield yield __await(__await(y_1_1.value)); continue outer; } } diff --git a/tests/baselines/reference/emitter.forAwait.es5.js b/tests/baselines/reference/emitter.forAwait.es5.js index d847c216bb246..956ef4a4f0246 100644 --- a/tests/baselines/reference/emitter.forAwait.es5.js +++ b/tests/baselines/reference/emitter.forAwait.es5.js @@ -259,35 +259,36 @@ function f3() { return __generator(this, function (_b) { switch (_b.label) { case 0: - _b.trys.push([0, 6, 7, 12]); + _b.trys.push([0, 7, 8, 13]); y_1 = __asyncValues(y); _b.label = 1; case 1: return [4 /*yield*/, __await(y_1.next())]; case 2: - if (!(y_1_1 = _b.sent(), !y_1_1.done)) return [3 /*break*/, 5]; - return [4 /*yield*/, __await(y_1_1.value)]; - case 3: + if (!(y_1_1 = _b.sent(), !y_1_1.done)) return [3 /*break*/, 6]; + return [4 /*yield*/, __await(__await(y_1_1.value))]; + case 3: return [4 /*yield*/, _b.sent()]; + case 4: x = _b.sent(); - _b.label = 4; - case 4: return [3 /*break*/, 1]; - case 5: return [3 /*break*/, 12]; - case 6: + _b.label = 5; + case 5: return [3 /*break*/, 1]; + case 6: return [3 /*break*/, 13]; + case 7: e_1_1 = _b.sent(); e_1 = { error: e_1_1 }; - return [3 /*break*/, 12]; - case 7: - _b.trys.push([7, , 10, 11]); - if (!(y_1_1 && !y_1_1.done && (_a = y_1.return))) return [3 /*break*/, 9]; - return [4 /*yield*/, __await(_a.call(y_1))]; + return [3 /*break*/, 13]; case 8: + _b.trys.push([8, , 11, 12]); + if (!(y_1_1 && !y_1_1.done && (_a = y_1.return))) return [3 /*break*/, 10]; + return [4 /*yield*/, __await(_a.call(y_1))]; + case 9: _b.sent(); - _b.label = 9; - case 9: return [3 /*break*/, 11]; - case 10: + _b.label = 10; + case 10: return [3 /*break*/, 12]; + case 11: if (e_1) throw e_1.error; return [7 /*endfinally*/]; - case 11: return [7 /*endfinally*/]; - case 12: return [2 /*return*/]; + case 12: return [7 /*endfinally*/]; + case 13: return [2 /*return*/]; } }); }); @@ -350,35 +351,36 @@ function f4() { return __generator(this, function (_b) { switch (_b.label) { case 0: - _b.trys.push([0, 6, 7, 12]); + _b.trys.push([0, 7, 8, 13]); y_1 = __asyncValues(y); _b.label = 1; case 1: return [4 /*yield*/, __await(y_1.next())]; case 2: - if (!(y_1_1 = _b.sent(), !y_1_1.done)) return [3 /*break*/, 5]; - return [4 /*yield*/, __await(y_1_1.value)]; - case 3: + if (!(y_1_1 = _b.sent(), !y_1_1.done)) return [3 /*break*/, 6]; + return [4 /*yield*/, __await(__await(y_1_1.value))]; + case 3: return [4 /*yield*/, _b.sent()]; + case 4: x = _b.sent(); - _b.label = 4; - case 4: return [3 /*break*/, 1]; - case 5: return [3 /*break*/, 12]; - case 6: + _b.label = 5; + case 5: return [3 /*break*/, 1]; + case 6: return [3 /*break*/, 13]; + case 7: e_1_1 = _b.sent(); e_1 = { error: e_1_1 }; - return [3 /*break*/, 12]; - case 7: - _b.trys.push([7, , 10, 11]); - if (!(y_1_1 && !y_1_1.done && (_a = y_1.return))) return [3 /*break*/, 9]; - return [4 /*yield*/, __await(_a.call(y_1))]; + return [3 /*break*/, 13]; case 8: + _b.trys.push([8, , 11, 12]); + if (!(y_1_1 && !y_1_1.done && (_a = y_1.return))) return [3 /*break*/, 10]; + return [4 /*yield*/, __await(_a.call(y_1))]; + case 9: _b.sent(); - _b.label = 9; - case 9: return [3 /*break*/, 11]; - case 10: + _b.label = 10; + case 10: return [3 /*break*/, 12]; + case 11: if (e_1) throw e_1.error; return [7 /*endfinally*/]; - case 11: return [7 /*endfinally*/]; - case 12: return [2 /*return*/]; + case 12: return [7 /*endfinally*/]; + case 13: return [2 /*return*/]; } }); }); @@ -523,35 +525,36 @@ function f6() { return __generator(this, function (_b) { switch (_b.label) { case 0: - _b.trys.push([0, 6, 7, 12]); + _b.trys.push([0, 7, 8, 13]); y_1 = __asyncValues(y); _b.label = 1; case 1: return [4 /*yield*/, __await(y_1.next())]; case 2: - if (!(y_1_1 = _b.sent(), !y_1_1.done)) return [3 /*break*/, 5]; - return [4 /*yield*/, __await(y_1_1.value)]; - case 3: + if (!(y_1_1 = _b.sent(), !y_1_1.done)) return [3 /*break*/, 6]; + return [4 /*yield*/, __await(__await(y_1_1.value))]; + case 3: return [4 /*yield*/, _b.sent()]; + case 4: x = _b.sent(); - return [3 /*break*/, 4]; - case 4: return [3 /*break*/, 1]; - case 5: return [3 /*break*/, 12]; - case 6: + return [3 /*break*/, 5]; + case 5: return [3 /*break*/, 1]; + case 6: return [3 /*break*/, 13]; + case 7: e_1_1 = _b.sent(); e_1 = { error: e_1_1 }; - return [3 /*break*/, 12]; - case 7: - _b.trys.push([7, , 10, 11]); - if (!(y_1_1 && !y_1_1.done && (_a = y_1.return))) return [3 /*break*/, 9]; - return [4 /*yield*/, __await(_a.call(y_1))]; + return [3 /*break*/, 13]; case 8: + _b.trys.push([8, , 11, 12]); + if (!(y_1_1 && !y_1_1.done && (_a = y_1.return))) return [3 /*break*/, 10]; + return [4 /*yield*/, __await(_a.call(y_1))]; + case 9: _b.sent(); - _b.label = 9; - case 9: return [3 /*break*/, 11]; - case 10: + _b.label = 10; + case 10: return [3 /*break*/, 12]; + case 11: if (e_1) throw e_1.error; return [7 /*endfinally*/]; - case 11: return [7 /*endfinally*/]; - case 12: return [2 /*return*/]; + case 12: return [7 /*endfinally*/]; + case 13: return [2 /*return*/]; } }); }); diff --git a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js index 699c4faf921e9..14057a6cdab46 100644 --- a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js +++ b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.js @@ -22,12 +22,13 @@ function f() { case 0: return [4 /*yield*/, tslib_1.__await(1)]; case 1: _a.sent(); - return [4 /*yield*/, 2]; - case 2: + return [4 /*yield*/, tslib_1.__await(2)]; + case 2: return [4 /*yield*/, _a.sent()]; + case 3: _a.sent(); return [5 /*yield**/, tslib_1.__values(tslib_1.__asyncDelegator(tslib_1.__asyncValues([3])))]; - case 3: return [4 /*yield*/, tslib_1.__await.apply(void 0, [_a.sent()])]; - case 4: + case 4: return [4 /*yield*/, tslib_1.__await.apply(void 0, [_a.sent()])]; + case 5: _a.sent(); return [2 /*return*/]; } From 4318d975310a00730c51fe7eab3e8644d1360f09 Mon Sep 17 00:00:00 2001 From: Artem Tyurin Date: Sat, 5 May 2018 02:45:33 +0200 Subject: [PATCH 3/5] Revert "Resolve promise inside async generator" This reverts commit 3e4279195f3eabdf1a473e0acaa942175ad81d7c. --- src/compiler/transformers/esnext.ts | 9 +-- .../reference/asyncImportNestedYield.js | 9 +-- ...ter.asyncGenerators.classMethods.es2015.js | 81 +++---------------- ...mitter.asyncGenerators.classMethods.es5.js | 81 +++---------------- ...cGenerators.functionDeclarations.es2015.js | 63 ++------------- ...syncGenerators.functionDeclarations.es5.js | 63 ++------------- ...ncGenerators.functionExpressions.es2015.js | 63 ++------------- ...asyncGenerators.functionExpressions.es5.js | 63 ++------------- ...cGenerators.objectLiteralMethods.es2015.js | 63 ++------------- ...syncGenerators.objectLiteralMethods.es5.js | 63 ++------------- .../reference/emitter.forAwait.es2015.js | 27 +------ .../reference/emitter.forAwait.es2017.js | 27 +------ .../reference/emitter.forAwait.es5.js | 27 +------ 13 files changed, 71 insertions(+), 568 deletions(-) diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index fde07b6323e42..109025c375dd9 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -922,14 +922,7 @@ namespace ts { return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/asyncImportNestedYield.js b/tests/baselines/reference/asyncImportNestedYield.js index ac27e5811869b..776caed516788 100644 --- a/tests/baselines/reference/asyncImportNestedYield.js +++ b/tests/baselines/reference/asyncImportNestedYield.js @@ -38,14 +38,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js index 0eb63ae638f6b..15bab8b98ae00 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js @@ -68,14 +68,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -94,14 +87,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -121,14 +107,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -158,14 +137,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -185,14 +157,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -222,14 +187,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -249,14 +207,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -276,14 +227,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -305,14 +249,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js index 827e1e535df41..85357291a6b89 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js @@ -95,14 +95,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -154,14 +147,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -219,14 +205,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -295,14 +274,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -371,14 +343,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -465,14 +430,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -530,14 +488,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -589,14 +540,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -661,14 +605,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js index f3cde3c01ea2f..31b0fb24a56e9 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js @@ -37,14 +37,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -61,14 +54,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -86,14 +72,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -121,14 +100,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -146,14 +118,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -181,14 +146,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -206,14 +164,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js index 4895ff855e603..ef96509019660 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js @@ -64,14 +64,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -118,14 +111,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -178,14 +164,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -249,14 +228,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -320,14 +292,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -409,14 +374,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -469,14 +427,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js index fb5577ef8d180..f460d91bc8bce 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js @@ -37,14 +37,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -61,14 +54,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -86,14 +72,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -121,14 +100,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -146,14 +118,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -181,14 +146,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -206,14 +164,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js index 25d688d5115ea..e175f32278cd5 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js @@ -64,14 +64,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -118,14 +111,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -178,14 +164,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -249,14 +228,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -320,14 +292,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -409,14 +374,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -469,14 +427,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js index 025713c1d1c99..9a0a9a42b3636 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js @@ -51,14 +51,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -77,14 +70,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -104,14 +90,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -141,14 +120,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -168,14 +140,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -205,14 +170,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -232,14 +190,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js index 32d6ce06c4628..608d57e5eb7be 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js @@ -78,14 +78,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -134,14 +127,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -196,14 +182,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -269,14 +248,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -342,14 +314,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -433,14 +398,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -495,14 +453,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.forAwait.es2015.js b/tests/baselines/reference/emitter.forAwait.es2015.js index 5f84389cd4e65..980dc3a8e3bef 100644 --- a/tests/baselines/reference/emitter.forAwait.es2015.js +++ b/tests/baselines/reference/emitter.forAwait.es2015.js @@ -118,14 +118,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -161,14 +154,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -238,14 +224,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.forAwait.es2017.js b/tests/baselines/reference/emitter.forAwait.es2017.js index 525c717637260..9fcf619099036 100644 --- a/tests/baselines/reference/emitter.forAwait.es2017.js +++ b/tests/baselines/reference/emitter.forAwait.es2017.js @@ -98,14 +98,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -141,14 +134,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -208,14 +194,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } diff --git a/tests/baselines/reference/emitter.forAwait.es5.js b/tests/baselines/reference/emitter.forAwait.es5.js index 956ef4a4f0246..277bc2b4e6b08 100644 --- a/tests/baselines/reference/emitter.forAwait.es5.js +++ b/tests/baselines/reference/emitter.forAwait.es5.js @@ -241,14 +241,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -333,14 +326,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } @@ -506,14 +492,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { - if (r.value instanceof __await) { - Promise.resolve(r.value.v).then(fulfill, reject); - } else if (r.value instanceof Promise) { - r.value.then(function(rv) { settle(q[0][2], resolve(r, rv)); }, function(e) { settle(q[0][3], resolve(r, e)); }); - } else { settle(q[0][2], r); } - } - function resolve(r, rv) { return { value: rv, done: r.done }; } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } From 4d37c44b92ea53129bf3d682ffff2dc9f9736a4b Mon Sep 17 00:00:00 2001 From: Artem Tyurin Date: Tue, 8 May 2018 08:21:08 +0200 Subject: [PATCH 4/5] Apply transformation to await expression --- src/compiler/transformers/esnext.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index 109025c375dd9..f0bd43a465912 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -147,7 +147,9 @@ namespace ts { return setOriginalNode( setTextRange( createYield( - createDownlevelAwait(node.expression) + createDownlevelAwait( + visitNode(node.expression, visitor, isExpression) + ) ), node ), From d88210b27057966bec7e4322c95eda6c6424a314 Mon Sep 17 00:00:00 2001 From: Artem Tyurin Date: Wed, 9 May 2018 09:09:49 +0200 Subject: [PATCH 5/5] Do not check for await expression and always output yield await --- src/compiler/transformers/esnext.ts | 22 +++++++++---------- ...ter.asyncGenerators.classMethods.es2015.js | 2 +- ...mitter.asyncGenerators.classMethods.es5.js | 5 +++-- ...cGenerators.functionDeclarations.es2015.js | 2 +- ...syncGenerators.functionDeclarations.es5.js | 5 +++-- ...ncGenerators.functionExpressions.es2015.js | 2 +- ...asyncGenerators.functionExpressions.es5.js | 5 +++-- ...cGenerators.objectLiteralMethods.es2015.js | 2 +- ...syncGenerators.objectLiteralMethods.es5.js | 5 +++-- 9 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/compiler/transformers/esnext.ts b/src/compiler/transformers/esnext.ts index f0bd43a465912..28366d4fce83f 100644 --- a/src/compiler/transformers/esnext.ts +++ b/src/compiler/transformers/esnext.ts @@ -143,19 +143,19 @@ namespace ts { ); } - if (node.expression && node.expression.kind !== SyntaxKind.AwaitExpression) { - return setOriginalNode( - setTextRange( - createYield( - createDownlevelAwait( - visitNode(node.expression, visitor, isExpression) - ) - ), - node + return setOriginalNode( + setTextRange( + createYield( + createDownlevelAwait( + node.expression + ? visitNode(node.expression, visitor, isExpression) + : createVoidZero() + ) ), node - ); - } + ), + node + ); } return visitEachChild(node, visitor, context); diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js index 15bab8b98ae00..58dbe061d18af 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.js @@ -95,7 +95,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar class C2 { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield; + const x = yield yield __await(void 0); }); } } diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js index 85357291a6b89..0387225261cd5 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.js @@ -160,8 +160,9 @@ var C2 = /** @class */ (function () { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js index 31b0fb24a56e9..1d242f4ce6b6c 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.js @@ -61,7 +61,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar }; function f2() { return __asyncGenerator(this, arguments, function* f2_1() { - const x = yield; + const x = yield yield __await(void 0); }); } //// [F3.js] diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js index ef96509019660..88a39d18cd011 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.js @@ -121,8 +121,9 @@ function f2() { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js index f460d91bc8bce..9c964275ff34e 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.js @@ -61,7 +61,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar }; const f2 = function () { return __asyncGenerator(this, arguments, function* () { - const x = yield; + const x = yield yield __await(void 0); }); }; //// [F3.js] diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js index e175f32278cd5..969036e96af7a 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.js @@ -121,8 +121,9 @@ var f2 = function () { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; } diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js index 9a0a9a42b3636..0f64e788b2956 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.js @@ -78,7 +78,7 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar const o2 = { f() { return __asyncGenerator(this, arguments, function* f_1() { - const x = yield; + const x = yield yield __await(void 0); }); } }; diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js index 608d57e5eb7be..ae2174497154e 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.js @@ -138,8 +138,9 @@ var o2 = { var x; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4 /*yield*/]; - case 1: + case 0: return [4 /*yield*/, __await(void 0)]; + case 1: return [4 /*yield*/, _a.sent()]; + case 2: x = _a.sent(); return [2 /*return*/]; }