From 2b9c3735fd179e2828074726cfb6c0f6bf0b9b88 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Wed, 1 Mar 2017 12:38:19 -0500 Subject: [PATCH 1/2] update to babylon beta 4 --- packages/babel-core/package.json | 2 +- packages/babel-generator/package.json | 2 +- packages/babel-template/package.json | 2 +- packages/babel-traverse/package.json | 2 +- packages/babel-types/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index c7490acbbd..2bbdd8270b 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -34,7 +34,7 @@ "babel-register": "^6.23.0", "babel-traverse": "^6.23.1", "babel-types": "^6.23.0", - "babylon": "7.0.0-beta.3", + "babylon": "7.0.0-beta.4", "convert-source-map": "^1.1.0", "debug": "^2.1.1", "json5": "^0.5.0", diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json index d4a971e231..893ce50df4 100644 --- a/packages/babel-generator/package.json +++ b/packages/babel-generator/package.json @@ -21,6 +21,6 @@ }, "devDependencies": { "babel-helper-fixtures": "^6.22.0", - "babylon": "7.0.0-beta.3" + "babylon": "7.0.0-beta.4" } } diff --git a/packages/babel-template/package.json b/packages/babel-template/package.json index bee9bfa059..ef7ec2e466 100644 --- a/packages/babel-template/package.json +++ b/packages/babel-template/package.json @@ -8,7 +8,7 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-template", "main": "lib/index.js", "dependencies": { - "babylon": "7.0.0-beta.3", + "babylon": "7.0.0-beta.4", "babel-traverse": "^6.23.0", "babel-types": "^6.23.0", "lodash": "^4.2.0" diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json index 3c85f0aabb..dd8422c73b 100644 --- a/packages/babel-traverse/package.json +++ b/packages/babel-traverse/package.json @@ -11,7 +11,7 @@ "babel-code-frame": "^6.22.0", "babel-messages": "^6.23.0", "babel-types": "^6.23.0", - "babylon": "7.0.0-beta.3", + "babylon": "7.0.0-beta.4", "debug": "^2.2.0", "globals": "^9.0.0", "invariant": "^2.2.0", diff --git a/packages/babel-types/package.json b/packages/babel-types/package.json index 0e0a3b01cf..ce18c4ffc5 100644 --- a/packages/babel-types/package.json +++ b/packages/babel-types/package.json @@ -13,6 +13,6 @@ "to-fast-properties": "^1.0.1" }, "devDependencies": { - "babylon": "7.0.0-beta.3" + "babylon": "7.0.0-beta.4" } } From b363e7b19992b93035978f2f2061e577a351781f Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Wed, 1 Mar 2017 12:54:22 -0500 Subject: [PATCH 2/2] add @danez's changes --- .eslintignore | 1 + .../src/index.js | 17 +++++++++++++++++ .../export-async/default-arrow-export/actual.js | 1 + .../default-arrow-export/expected.js | 8 ++++++++ .../export-async/default-export/actual.js | 1 + .../export-async/default-export/expected.js | 15 +++++++++++++++ 6 files changed, 43 insertions(+) create mode 100644 packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/actual.js create mode 100644 packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/expected.js create mode 100644 packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/actual.js create mode 100644 packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/expected.js diff --git a/.eslintignore b/.eslintignore index 5ea6066c60..02e6e29eb7 100644 --- a/.eslintignore +++ b/.eslintignore @@ -6,6 +6,7 @@ packages/*/node_modules packages/*/lib packages/*/dist packages/*/test/fixtures +packages/*/test/tmp vendor _babel.github.io Gulpfile.js diff --git a/packages/babel-helper-remap-async-to-generator/src/index.js b/packages/babel-helper-remap-async-to-generator/src/index.js index 8cabe9ee06..5cdf041f30 100644 --- a/packages/babel-helper-remap-async-to-generator/src/index.js +++ b/packages/babel-helper-remap-async-to-generator/src/index.js @@ -146,6 +146,23 @@ function plainFunction(path: NodePath, callId: Object) { ]); declar._blockHoist = true; + if (path.parentPath.isExportDefaultDeclaration()) { + // change the path type so that replaceWith() does not wrap + // the identifier into an expressionStatement + path.parentPath.insertBefore(declar); + path.parentPath.replaceWith( + t.exportNamedDeclaration(null, + [ + t.exportSpecifier( + t.identifier(asyncFnId.name), + t.identifier("default") + ) + ] + ) + ); + return; + } + path.replaceWith(declar); } else { const retFunction = container.body.body[1].argument; diff --git a/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/actual.js b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/actual.js new file mode 100644 index 0000000000..22ad33dc07 --- /dev/null +++ b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/actual.js @@ -0,0 +1 @@ +export default async () => { return await foo(); } diff --git a/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/expected.js b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/expected.js new file mode 100644 index 0000000000..130cbb5e7f --- /dev/null +++ b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-arrow-export/expected.js @@ -0,0 +1,8 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = babelHelpers.asyncToGenerator(function* () { + return yield foo(); +}); \ No newline at end of file diff --git a/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/actual.js b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/actual.js new file mode 100644 index 0000000000..9c82a22d00 --- /dev/null +++ b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/actual.js @@ -0,0 +1 @@ +export default async function myFunc() {} diff --git a/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/expected.js b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/expected.js new file mode 100644 index 0000000000..84d8c21afc --- /dev/null +++ b/packages/babel-plugin-transform-async-to-generator/test/fixtures/export-async/default-export/expected.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +let myFunc = (() => { + var _ref = babelHelpers.asyncToGenerator(function* () {}); + + return function myFunc() { + return _ref.apply(this, arguments); + }; +})(); + +exports.default = myFunc; \ No newline at end of file