From bda0d5cc68146b15f99ab91e69326df802bc726c Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 28 Jul 2015 19:58:51 +0100 Subject: [PATCH] create new export named declaration when we're splitting it up - fixes #2092 --- .../transformation/transformers/internal/modules.js | 10 +++++----- .../es6.modules/{comments-explosion => }/options.json | 0 .../transformation/es6.modules/retain-lines/actual.js | 11 +++++++++++ .../es6.modules/retain-lines/expected.js | 10 ++++++++++ .../es6.modules/retain-lines/options.json | 3 +++ .../enforce-newline-modules-blacklist/expected.js | 1 - 6 files changed, 29 insertions(+), 6 deletions(-) rename packages/babel/test/fixtures/transformation/es6.modules/{comments-explosion => }/options.json (100%) create mode 100644 packages/babel/test/fixtures/transformation/es6.modules/retain-lines/actual.js create mode 100644 packages/babel/test/fixtures/transformation/es6.modules/retain-lines/expected.js create mode 100644 packages/babel/test/fixtures/transformation/es6.modules/retain-lines/options.json diff --git a/packages/babel/src/transformation/transformers/internal/modules.js b/packages/babel/src/transformation/transformers/internal/modules.js index 3551804a52..3d93c10cad 100644 --- a/packages/babel/src/transformation/transformers/internal/modules.js +++ b/packages/babel/src/transformation/transformers/internal/modules.js @@ -4,7 +4,6 @@ // a generator function as a default then regenerator will destroy the export // declaration and leave a variable declaration in it's place... yeah, handy. -import clone from "lodash/lang/clone"; import * as t from "../../../types"; /** @@ -85,11 +84,12 @@ export var visitor = { return nodes; } else if (t.isFunctionDeclaration(declar)) { // export function Foo() {} - node.specifiers = [buildExportSpecifier(declar.id)]; - node._blockHoist = 2; - let nodes = [getDeclar(node), node]; - node.declaration = null; + let nodes = [ + getDeclar(node), + t.exportNamedDeclaration(null, [buildExportSpecifier(declar.id)]) + ]; + nodes[1]._blockHoist = 2; // ensure it's hoisted return nodes; } else if (t.isVariableDeclaration(declar)) { // export var foo = "bar"; diff --git a/packages/babel/test/fixtures/transformation/es6.modules/comments-explosion/options.json b/packages/babel/test/fixtures/transformation/es6.modules/options.json similarity index 100% rename from packages/babel/test/fixtures/transformation/es6.modules/comments-explosion/options.json rename to packages/babel/test/fixtures/transformation/es6.modules/options.json diff --git a/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/actual.js b/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/actual.js new file mode 100644 index 0000000000..6b7abe88c5 --- /dev/null +++ b/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/actual.js @@ -0,0 +1,11 @@ +export function foo() { + console.log(1); + console.log(2); + console.log(3); +} + +export function bar() { + console.log(1); + console.log(2); + console.log(3); +} diff --git a/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/expected.js b/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/expected.js new file mode 100644 index 0000000000..2fac87fd6d --- /dev/null +++ b/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/expected.js @@ -0,0 +1,10 @@ +"use strict";export { foo };export { bar };function foo() { + console.log(1); + console.log(2); + console.log(3);} + + +function bar() { + console.log(1); + console.log(2); + console.log(3);} diff --git a/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/options.json b/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/options.json new file mode 100644 index 0000000000..97925bbcb6 --- /dev/null +++ b/packages/babel/test/fixtures/transformation/es6.modules/retain-lines/options.json @@ -0,0 +1,3 @@ +{ + "retainLines": true +} diff --git a/packages/babel/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js b/packages/babel/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js index cad36dca3a..ec5eff1b43 100644 --- a/packages/babel/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js +++ b/packages/babel/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js @@ -1,7 +1,6 @@ "use strict"; export { foo }; - export { bar }; function foo() {}