Adhering to async generator yield behavior change (#6452)

This commit is contained in:
Mateusz Burzyński
2017-10-21 21:48:27 +02:00
committed by GitHub
parent 39d05da3ed
commit 4684edaec7
14 changed files with 86 additions and 33 deletions

View File

@@ -0,0 +1,24 @@
"use strict";
const actual = [];
const expected = ["foo", "bar", "baz", "xyz"];
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
async function* test() {
yield await delay(0).then(() => actual.push("foo"));
await delay(0).then(() => actual.push("bar"));
yield delay(0).then(() => actual.push("baz"));
actual.push("xyz");
}
async function main() {
const g = test();
g.next();
g.next();
await g.next();
}
return main().then(() => {
assert.deepEqual(actual, expected);
});

View File

@@ -0,0 +1,11 @@
{
"plugins": [
"external-helpers",
"transform-async-to-generator",
"transform-async-generator-functions"
],
"presets": ["es2015"],
"parserOpts": {
"allowReturnOutsideFunction": true
}
}

View File

@@ -1,7 +1,8 @@
babelHelpers.asyncToGenerator(function* () {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
var _iteratorError;
try {
for (var _iterator = babelHelpers.asyncIterator(y), _step, _value; _step = yield _iterator.next(), _iteratorNormalCompletion = _step.done, _value = yield _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {

View File

@@ -2,7 +2,8 @@ let f = (() => {
var _ref = babelHelpers.asyncToGenerator(function* () {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
var _iteratorError;
try {
for (var _iterator = babelHelpers.asyncIterator(y), _step, _value; _step = yield _iterator.next(), _iteratorNormalCompletion = _step.done, _value = yield _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {

View File

@@ -2,7 +2,8 @@ let g = (() => {
var _ref = babelHelpers.wrapAsyncGenerator(function* () {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
var _iteratorError;
try {
for (var _iterator = babelHelpers.asyncIterator(y), _step, _value; _step = yield babelHelpers.awaitAsyncGenerator(_iterator.next()), _iteratorNormalCompletion = _step.done, _value = yield babelHelpers.awaitAsyncGenerator(_step.value), !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {

View File

@@ -2,7 +2,8 @@ let f = (() => {
var _ref = babelHelpers.asyncToGenerator(function* () {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
var _iteratorError;
try {
for (var _iterator = babelHelpers.asyncIterator(a), _step, _value; _step = yield _iterator.next(), _iteratorNormalCompletion = _step.done, _value = yield _step.value, !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {