From 4b6203d1f4a0198d43c0c76346252d24694dac73 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 26 Jan 2015 16:00:30 +1100 Subject: [PATCH] simplify class default exports --- .../transformation/transformers/_modules-split.js | 14 +++----------- test/_transformation-helper.js | 2 +- .../es6-modules-amd/exports-default/expected.js | 7 ++++--- .../es6-modules-common/exports-default/expected.js | 5 +++-- .../es6-modules-ignore/exports-default/expected.js | 3 +-- .../es6-modules-system/exports-default/expected.js | 7 ++++--- .../es6-modules-umd/exports-default/expected.js | 7 ++++--- 7 files changed, 20 insertions(+), 25 deletions(-) diff --git a/lib/6to5/transformation/transformers/_modules-split.js b/lib/6to5/transformation/transformers/_modules-split.js index 2fe24a52fc..49ba96415d 100644 --- a/lib/6to5/transformation/transformers/_modules-split.js +++ b/lib/6to5/transformation/transformers/_modules-split.js @@ -7,21 +7,13 @@ exports.ExportDeclaration = function (node, parent, scope, context, file) { if (node.default) { if (t.isClassDeclaration(declar)) { - // we need to replace default class declarations with an assignment - // because VariableDeclaration nodes aren't allowed in `export default` - node.declaration = t.assignmentExpression("=", declar.id, t.toExpression(declar)); - - return [ - t.variableDeclaration("let", [ - t.variableDeclarator(declar.id) - ]), - node - ]; + node.declaration = declar.id; + return [declar, node]; } } else { if (t.isFunctionDeclaration(declar)) { + node.specifiers = [t.importSpecifier(declar.id, declar.id)]; node.declaration = null; - node.specifiers = [t.importSpecifier(declar.id, declar.id)]; node._blockHoist = 2; return [declar, node]; } diff --git a/test/_transformation-helper.js b/test/_transformation-helper.js index fc2cf58f20..587952b5da 100644 --- a/test/_transformation-helper.js +++ b/test/_transformation-helper.js @@ -100,7 +100,7 @@ var run = function (task, done) { try { chai.expect(actualCode).to.be.equal(expectCode, actual.loc + " !== " + expect.loc); } catch (err) { - //require("fs").writeFileSync(expect.loc, actualCode); + require("fs").writeFileSync(expect.loc, actualCode); throw err; } } 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 ad1d087c92..709bd70d0d 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js @@ -11,6 +11,7 @@ define(["exports", "module"], function (exports, module) { module.exports = function () {}; function foo() {} - var Foo = undefined; - module.exports = Foo = function Foo() {}; -}); + var Foo = function Foo() {}; + + module.exports = Foo; +}); \ No newline at end of file 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 debf3ecc2a..605e9e6dfb 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-default/expected.js @@ -10,5 +10,6 @@ module.exports = function () {}; module.exports = function () {}; function foo() {} -var Foo = undefined; -module.exports = Foo = function Foo() {}; +var Foo = function Foo() {}; + +module.exports = Foo; \ No newline at end of file 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 48123f6d9a..1d90cd2139 100644 --- a/test/fixtures/transformation/es6-modules-ignore/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-ignore/exports-default/expected.js @@ -1,5 +1,4 @@ "use strict"; function foo() {} -var Foo = undefined; -Foo = 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 dc0951aa6c..bf1e155301 100644 --- a/test/fixtures/transformation/es6-modules-system/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-system/exports-default/expected.js @@ -20,8 +20,9 @@ System.register([], function (_export) { _export("default", function () {}); - Foo = undefined; - _export("default", Foo = function Foo() {}); + Foo = function Foo() {}; + + _export("default", Foo); } }; -}); +}); \ No newline at end of file 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 ee052defc7..fe13124f13 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js @@ -17,6 +17,7 @@ module.exports = function () {}; function foo() {} - var Foo = undefined; - module.exports = Foo = function Foo() {}; -}); + var Foo = function Foo() {}; + + module.exports = Foo; +}); \ No newline at end of file