From cd9bb7ba10f3bf6f019acd1ad39a5da6e01b644d Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Sun, 9 Apr 2017 18:39:15 -0500 Subject: [PATCH] Ensure default exported classes keep entry in export table (#5488) --- .../test/fixtures/general/static-export/expected.js | 2 +- .../test/fixtures/regression/T2983/expected.js | 2 +- .../test/fixtures/spec/regression-T2983/expected.js | 2 +- .../test/fixtures/spec/static-export/expected.js | 2 +- packages/babel-plugin-transform-es2015-classes/src/index.js | 5 ++++- .../test/fixtures/regression/2663/expected.js | 1 + .../test/fixtures/regression/2694/expected.js | 1 + .../test/fixtures/regression/2775/expected.js | 1 + .../test/fixtures/spec/export-default/actual.js | 1 + .../test/fixtures/spec/export-default/expected.js | 5 +++++ .../test/fixtures/spec/export-super-class/expected.js | 2 +- .../test/fixtures/function-name/modules-2/expected.js | 1 + .../test/fixtures/function-name/modules-3/expected.js | 1 + 13 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/actual.js create mode 100644 packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js index 848dfbe5f6..7303d393f4 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js @@ -9,4 +9,4 @@ var MyClass2 = function MyClass2() { }; MyClass2.property = value; -export default MyClass2; +export { MyClass2 as default }; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T2983/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T2983/expected.js index 1ac70e7fd6..cd23c4fa99 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T2983/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/regression/T2983/expected.js @@ -9,5 +9,5 @@ var _class2 = function _class2() { }; _class2.test = true; -export default _class2; +export { _class2 as default }; ; \ No newline at end of file diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/expected.js index e146566f95..b7af9d87e7 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/regression-T2983/expected.js @@ -17,5 +17,5 @@ Object.defineProperty(_class2, "test", { writable: true, value: true }); -export default _class2; +export { _class2 as default }; ; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/expected.js index 3363e3b4ce..e36b140aec 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/static-export/expected.js @@ -17,4 +17,4 @@ Object.defineProperty(MyClass2, "property", { writable: true, value: value }); -export default MyClass2; +export { MyClass2 as default }; \ No newline at end of file diff --git a/packages/babel-plugin-transform-es2015-classes/src/index.js b/packages/babel-plugin-transform-es2015-classes/src/index.js index 52e06fa3af..1e41a94f5a 100644 --- a/packages/babel-plugin-transform-es2015-classes/src/index.js +++ b/packages/babel-plugin-transform-es2015-classes/src/index.js @@ -17,7 +17,10 @@ export default function ({ types: t }) { // Split the class declaration and the export into two separate statements. path.replaceWith(node.declaration); - path.insertAfter(t.exportDefaultDeclaration(ref)); + path.insertAfter(t.exportNamedDeclaration( + null, + [t.exportSpecifier(ref, t.identifier("default"))] + )); }, ClassDeclaration(path) { diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js index 297c21e944..af49a8fce0 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663/expected.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = undefined; var _net = require('net'); diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2694/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2694/expected.js index 60bbbdd652..ff97366ac3 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2694/expected.js +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2694/expected.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = undefined; var _BaseFoo2 = require('./BaseFoo'); diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js index f7d596226a..c4212a37ff 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = undefined; var _react = require('react'); diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/actual.js new file mode 100644 index 0000000000..7804111002 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/actual.js @@ -0,0 +1 @@ +export default class Foo {} diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/expected.js new file mode 100644 index 0000000000..60cf0eddd5 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-default/expected.js @@ -0,0 +1,5 @@ +var Foo = function Foo() { + babelHelpers.classCallCheck(this, Foo); +}; + +export { Foo as default }; diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-super-class/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-super-class/expected.js index 8c889ce026..b67745b3fd 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-super-class/expected.js +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/spec/export-super-class/expected.js @@ -9,4 +9,4 @@ var _class = function (_A) { return _class; }(A); -export default _class; +export { _class as default }; diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-2/expected.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-2/expected.js index bd17524c7e..8a796cf407 100644 --- a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-2/expected.js +++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-2/expected.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = undefined; var _last2 = require("lodash/last"); diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-3/expected.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-3/expected.js index 0bf6d8fc22..31bcd2eba2 100644 --- a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-3/expected.js +++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/modules-3/expected.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = undefined; var _store = require("./store");