From 2b85045b61e4b62b715ba429018fe7cf210fb4ca Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Wed, 28 Jan 2015 12:58:05 +1100 Subject: [PATCH] split up class expressions in `export default` --- .../transformers/internal/modules-split.js | 9 ++++++++- .../es6-modules-amd/exports-default/expected.js | 3 ++- .../es6-modules-common/exports-default/expected.js | 3 ++- .../es6-modules-ignore/exports-default/expected.js | 2 ++ .../es6-modules-system/exports-default/expected.js | 6 ++++-- .../es6-modules-umd/exports-default/expected.js | 3 ++- .../actual.js | 0 .../expected.js | 0 8 files changed, 20 insertions(+), 6 deletions(-) rename test/fixtures/transformation/self-contained/{regenerator-runtime => .regenerator-runtime}/actual.js (100%) rename test/fixtures/transformation/self-contained/{regenerator-runtime => .regenerator-runtime}/expected.js (100%) diff --git a/lib/6to5/transformation/transformers/internal/modules-split.js b/lib/6to5/transformation/transformers/internal/modules-split.js index 36d9701dc7..3610bebe93 100644 --- a/lib/6to5/transformation/transformers/internal/modules-split.js +++ b/lib/6to5/transformation/transformers/internal/modules-split.js @@ -2,13 +2,20 @@ var t = require("../../../types"); -exports.ExportDeclaration = function (node) { +exports.ExportDeclaration = function (node, parent, scope) { var declar = node.declaration; if (node.default) { if (t.isClassDeclaration(declar)) { node.declaration = declar.id; return [declar, node]; + } else if (t.isClassExpression(declar)) { + var temp = scope.generateUidIdentifier("default"); + declar = t.variableDeclaration("var", [ + t.variableDeclarator(temp, declar) + ]); + node.declaration = temp; + return [declar, node]; } } else { if (t.isFunctionDeclaration(declar)) { diff --git a/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js b/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js index 709bd70d0d..502245b6a1 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js @@ -8,8 +8,9 @@ define(["exports", "module"], function (exports, module) { module.exports = foo; module.exports = function () {}; - module.exports = function () {}; + var _default = function _default() {}; + module.exports = _default; function foo() {} var Foo = function Foo() {}; diff --git a/test/fixtures/transformation/es6-modules-common/exports-default/expected.js b/test/fixtures/transformation/es6-modules-common/exports-default/expected.js index 605e9e6dfb..d5c084b553 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-default/expected.js @@ -7,8 +7,9 @@ module.exports = []; module.exports = foo; module.exports = function () {}; -module.exports = function () {}; +var _default = function _default() {}; +module.exports = _default; function foo() {} var Foo = function Foo() {}; diff --git a/test/fixtures/transformation/es6-modules-ignore/exports-default/expected.js b/test/fixtures/transformation/es6-modules-ignore/exports-default/expected.js index 1d90cd2139..2484b584b3 100644 --- a/test/fixtures/transformation/es6-modules-ignore/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-ignore/exports-default/expected.js @@ -1,4 +1,6 @@ "use strict"; +var _default = function _default() {}; + function foo() {} var Foo = function Foo() {}; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-system/exports-default/expected.js b/test/fixtures/transformation/es6-modules-system/exports-default/expected.js index bf1e155301..88a37c3f83 100644 --- a/test/fixtures/transformation/es6-modules-system/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-system/exports-default/expected.js @@ -1,7 +1,7 @@ System.register([], function (_export) { "use strict"; - var Foo; + var _default, Foo; _export("default", foo); function foo() {} @@ -18,7 +18,9 @@ System.register([], function (_export) { _export("default", function () {}); - _export("default", function () {}); + _default = function _default() {}; + + _export("default", _default); Foo = function Foo() {}; diff --git a/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js b/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js index fe13124f13..cd21b0b58b 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js @@ -14,8 +14,9 @@ module.exports = foo; module.exports = function () {}; - module.exports = function () {}; + var _default = function _default() {}; + module.exports = _default; function foo() {} var Foo = function Foo() {}; diff --git a/test/fixtures/transformation/self-contained/regenerator-runtime/actual.js b/test/fixtures/transformation/self-contained/.regenerator-runtime/actual.js similarity index 100% rename from test/fixtures/transformation/self-contained/regenerator-runtime/actual.js rename to test/fixtures/transformation/self-contained/.regenerator-runtime/actual.js diff --git a/test/fixtures/transformation/self-contained/regenerator-runtime/expected.js b/test/fixtures/transformation/self-contained/.regenerator-runtime/expected.js similarity index 100% rename from test/fixtures/transformation/self-contained/regenerator-runtime/expected.js rename to test/fixtures/transformation/self-contained/.regenerator-runtime/expected.js