Skip to content

Commit

Permalink
[babel 8] Don't pass the second parameter to asyncGeneratorDelegate
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Aug 25, 2022
1 parent 4165bd3 commit 5a5fd7f
Show file tree
Hide file tree
Showing 12 changed files with 60 additions and 7 deletions.
Expand Up @@ -17,11 +17,15 @@ export default declare(api => {

YieldExpression({ node }, state) {
if (!node.delegate) return;
const callee = state.addHelper("asyncGeneratorDelegate");
node.argument = t.callExpression(callee, [
t.callExpression(state.addHelper("asyncIterator"), [node.argument]),
state.addHelper("awaitAsyncGenerator"),
const asyncIter = t.callExpression(state.addHelper("asyncIterator"), [
node.argument,
]);
node.argument = t.callExpression(
state.addHelper("asyncGeneratorDelegate"),
process.env.BABEL_8_BREAKING
? [asyncIter]
: [asyncIter, state.addHelper("awaitAsyncGenerator")],
);
},
},
environmentVisitor,
Expand Down
@@ -0,0 +1,4 @@
async function* g() {
yield* [1, 2, 3];
yield* iterable;
}
@@ -0,0 +1,3 @@
{
"BABEL_8_BREAKING": false
}
@@ -0,0 +1,11 @@
function g() {
return _g.apply(this, arguments);
}

function _g() {
_g = babelHelpers.wrapAsyncGenerator(function* () {
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator([1, 2, 3]), babelHelpers.awaitAsyncGenerator);
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator(iterable), babelHelpers.awaitAsyncGenerator);
});
return _g.apply(this, arguments);
}
@@ -0,0 +1,3 @@
{
"BABEL_8_BREAKING": true
}
Expand Up @@ -4,8 +4,8 @@ function g() {

function _g() {
_g = babelHelpers.wrapAsyncGenerator(function* () {
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator([1, 2, 3]), babelHelpers.awaitAsyncGenerator);
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator(iterable), babelHelpers.awaitAsyncGenerator);
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator([1, 2, 3]));
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator(iterable));
});
return _g.apply(this, arguments);
}
@@ -0,0 +1,7 @@
async function* fn() {
yield* [Promise.resolve("ok")] // CreateAsyncFromSyncIterator
}

return fn().next().then(result => {
expect(result).toEqual({ value: "ok", done: false });
});
@@ -0,0 +1,3 @@
async function* fn() {
yield* [Promise.resolve("ok")] // CreateAsyncFromSyncIterator
}
@@ -0,0 +1,7 @@
{
"BABEL_8_BREAKING": false,
"plugins": ["proposal-async-generator-functions"],
"parserOpts": {
"allowReturnOutsideFunction": true
}
}
@@ -0,0 +1,10 @@
function fn() {
return _fn.apply(this, arguments);
}

function _fn() {
_fn = babelHelpers.wrapAsyncGenerator(function* () {
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator([Promise.resolve("ok")]), babelHelpers.awaitAsyncGenerator); // CreateAsyncFromSyncIterator
});
return _fn.apply(this, arguments);
}
@@ -1,4 +1,5 @@
{
"BABEL_8_BREAKING": true,
"plugins": ["proposal-async-generator-functions"],
"parserOpts": {
"allowReturnOutsideFunction": true
Expand Down
Expand Up @@ -4,7 +4,7 @@ function fn() {

function _fn() {
_fn = babelHelpers.wrapAsyncGenerator(function* () {
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator([Promise.resolve("ok")]), babelHelpers.awaitAsyncGenerator); // CreateAsyncFromSyncIterator
yield* babelHelpers.asyncGeneratorDelegate(babelHelpers.asyncIterator([Promise.resolve("ok")])); // CreateAsyncFromSyncIterator
});
return _fn.apply(this, arguments);
}

0 comments on commit 5a5fd7f

Please sign in to comment.