From 276c98f7f0fcc7dae1fd8847a5a8dc185dd35b5d Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Sat, 19 Dec 2015 22:47:56 -0500 Subject: [PATCH] Remove await* from babel-generator, add parsing error to babylon - (fixes T6688) --- packages/babel-generator/src/generators/expressions.js | 2 +- .../test/fixtures/types/AwaitExpression/actual.js | 4 ---- .../test/fixtures/types/AwaitExpression/expected.js | 4 ---- packages/babel-plugin-transform-regenerator/src/visit.js | 2 +- packages/babylon/src/parser/expression.js | 5 ++++- .../fixtures/experimental/await/illegal-await-star/actual.js | 3 +++ .../experimental/await/illegal-await-star/options.json | 4 ++++ 7 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 packages/babylon/test/fixtures/experimental/await/illegal-await-star/actual.js create mode 100644 packages/babylon/test/fixtures/experimental/await/illegal-await-star/options.json diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js index db021892af..b5d9ecb860 100644 --- a/packages/babel-generator/src/generators/expressions.js +++ b/packages/babel-generator/src/generators/expressions.js @@ -118,7 +118,7 @@ function buildYieldAwait(keyword: string) { return function (node: Object) { this.push(keyword); - if (node.delegate || node.all) { + if (node.delegate) { this.push("*"); } diff --git a/packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js b/packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js index 17bd494915..939e81e678 100644 --- a/packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js +++ b/packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js @@ -1,7 +1,3 @@ async function foo() { await bar(); } - -async function bar() { - await* foo(); -} diff --git a/packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js b/packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js index 17bd494915..939e81e678 100644 --- a/packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js +++ b/packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js @@ -1,7 +1,3 @@ async function foo() { await bar(); } - -async function bar() { - await* foo(); -} diff --git a/packages/babel-plugin-transform-regenerator/src/visit.js b/packages/babel-plugin-transform-regenerator/src/visit.js index 15e522ace1..6d3448659d 100644 --- a/packages/babel-plugin-transform-regenerator/src/visit.js +++ b/packages/babel-plugin-transform-regenerator/src/visit.js @@ -247,7 +247,7 @@ let awaitVisitor = { }, AwaitExpression: function(path) { - // Convert await and await* expressions to yield expressions. + // Convert await expressions to yield expressions. let argument = path.node.argument; // Transforming `await x` to `yield regeneratorRuntime.awrap(x)` diff --git a/packages/babylon/src/parser/expression.js b/packages/babylon/src/parser/expression.js index 64b7f1c18d..82d0fd7f2e 100644 --- a/packages/babylon/src/parser/expression.js +++ b/packages/babylon/src/parser/expression.js @@ -968,7 +968,10 @@ pp.parseAwait = function (node) { if (this.isLineTerminator()) { this.unexpected(); } - node.all = this.eat(tt.star); + node.all = false; + if (this.match(tt.star)) { + this.raise(node.start, "await* has been removed from the async functions proposal. Use Promise.all() instead.") + } node.argument = this.parseMaybeUnary(); return this.finishNode(node, "AwaitExpression"); }; diff --git a/packages/babylon/test/fixtures/experimental/await/illegal-await-star/actual.js b/packages/babylon/test/fixtures/experimental/await/illegal-await-star/actual.js new file mode 100644 index 0000000000..52f31ef5d1 --- /dev/null +++ b/packages/babylon/test/fixtures/experimental/await/illegal-await-star/actual.js @@ -0,0 +1,3 @@ +async function bar() { + await* foo(); +} diff --git a/packages/babylon/test/fixtures/experimental/await/illegal-await-star/options.json b/packages/babylon/test/fixtures/experimental/await/illegal-await-star/options.json new file mode 100644 index 0000000000..85fdea96e9 --- /dev/null +++ b/packages/babylon/test/fixtures/experimental/await/illegal-await-star/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["asyncFunctions"], + "throws": "await* has been removed from the async functions proposal. Use Promise.all() instead. (2:2)" +}