From a4382580fc4dcc89d2b2fe641dbfbfcac1666b85 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Fri, 27 Feb 2015 15:25:13 +1100 Subject: [PATCH] ignore user whitespace when splitting up module declaration - fixes #906 --- .../transformation/transformers/internal/modules.js | 13 +++++++++---- .../es6-modules-amd/exports-default/expected.js | 1 + .../es6-modules-amd/exports-variable/expected.js | 1 + .../hoist-function-exports/expected.js | 1 + .../es6-modules-common-strict/export/expected.js | 3 ++- .../exports-default-non-function/expected.js | 2 ++ .../es6-modules-common/exports-default/expected.js | 3 ++- .../es6-modules-common/exports-variable/expected.js | 3 ++- .../es6-modules-ignore/exports-variable/expected.js | 4 +++- .../es6-modules-system/exports-default/expected.js | 1 + .../es6-modules-system/exports-variable/expected.js | 1 + .../es6-modules-umd/exports-default/expected.js | 1 + .../es6-modules-umd/exports-variable/expected.js | 1 + .../hoist-function-exports/expected.js | 1 + .../enforce-newline-modules-blacklist/actual.js | 3 +++ .../enforce-newline-modules-blacklist/expected.js | 9 +++++++++ .../enforce-newline-modules-blacklist/options.json | 3 +++ 17 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/transformation/misc/enforce-newline-modules-blacklist/actual.js create mode 100644 test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js create mode 100644 test/fixtures/transformation/misc/enforce-newline-modules-blacklist/options.json diff --git a/src/babel/transformation/transformers/internal/modules.js b/src/babel/transformation/transformers/internal/modules.js index 0f9926d419..0cd651ecbf 100644 --- a/src/babel/transformation/transformers/internal/modules.js +++ b/src/babel/transformation/transformers/internal/modules.js @@ -25,28 +25,33 @@ export function ExportDeclaration(node, parent, scope) { var declar = node.declaration; + var getDeclar = function () { + declar._ignoreUserWhitespace = true; + return declar; + }; + if (node.default) { if (t.isClassDeclaration(declar)) { node.declaration = declar.id; - return [declar, node]; + return [getDeclar(), 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]; + return [getDeclar(), node]; } else if (t.isFunctionDeclaration(declar)) { node._blockHoist = 2; node.declaration = declar.id; - return [declar, node]; + return [getDeclar(), node]; } } else { if (t.isFunctionDeclaration(declar)) { node.specifiers = [t.importSpecifier(declar.id, declar.id)]; node.declaration = null; node._blockHoist = 2; - return [declar, node]; + return [getDeclar(), node]; } } } 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 ea14e00737..19d2991d7d 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-default/expected.js @@ -16,6 +16,7 @@ define(["exports", "module"], function (exports, module) { }; module.exports = _default; + function foo() {} var Foo = function Foo() { diff --git a/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js index 9f4243860d..758bedb23a 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js @@ -12,6 +12,7 @@ define(["exports"], function (exports) { var foo4 = exports.foo4 = 2; var foo5 = exports.foo5 = undefined; var foo6 = exports.foo6 = 3; + function foo7() {} var foo8 = exports.foo8 = function foo8() { diff --git a/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js index 79267d3f30..67be17eac4 100644 --- a/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js @@ -3,6 +3,7 @@ define(["exports", "./evens"], function (exports, _evens) { exports.nextOdd = nextOdd; var isEven = _evens.isEven; + function nextOdd(n) { return isEven(n) ? n + 1 : n + 2; } diff --git a/test/fixtures/transformation/es6-modules-common-strict/export/expected.js b/test/fixtures/transformation/es6-modules-common-strict/export/expected.js index f9946c5270..6fce486d92 100644 --- a/test/fixtures/transformation/es6-modules-common-strict/export/expected.js +++ b/test/fixtures/transformation/es6-modules-common-strict/export/expected.js @@ -1,4 +1,5 @@ "use strict"; exports.foo = foo; -function foo() {} + +function foo() {} \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js b/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js index ac9a8a6e70..ad21772ee9 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js @@ -2,7 +2,9 @@ exports.Cachier = Cachier; exports["default"] = new Cachier(); + function Cachier(databaseName) {} + Object.defineProperty(exports, "__esModule", { value: true }); \ 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 91b0193462..e104cd3415 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-default/expected.js @@ -15,10 +15,11 @@ var _default = function _default() { }; module.exports = _default; + function foo() {} var Foo = function Foo() { _classCallCheck(this, Foo); }; -module.exports = Foo; +module.exports = Foo; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js index a6a2bed9d2..d2cb09cbef 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js @@ -11,6 +11,7 @@ var foo3 = exports.foo3 = undefined; var foo4 = exports.foo4 = 2; var foo5 = exports.foo5 = undefined; var foo6 = exports.foo6 = 3; + function foo7() {} var foo8 = exports.foo8 = function foo8() { @@ -19,4 +20,4 @@ var foo8 = exports.foo8 = function foo8() { Object.defineProperty(exports, "__esModule", { value: true -}); +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-ignore/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-ignore/exports-variable/expected.js index 3d7c5adad2..1a08078682 100644 --- a/test/fixtures/transformation/es6-modules-ignore/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-ignore/exports-variable/expected.js @@ -10,7 +10,9 @@ var foo3 = undefined; var foo4 = 2; var foo5 = undefined; var foo6 = 3; + function foo7() {} + var foo8 = function foo8() { _classCallCheck(this, foo8); -}; +}; \ 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 f6442f9402..cab98a125b 100644 --- a/test/fixtures/transformation/es6-modules-system/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-system/exports-default/expected.js @@ -4,6 +4,7 @@ System.register([], function (_export) { _export("default", foo); function foo() {} + return { setters: [], execute: function () { diff --git a/test/fixtures/transformation/es6-modules-system/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-system/exports-variable/expected.js index 8e7893b129..c94cf23409 100644 --- a/test/fixtures/transformation/es6-modules-system/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-system/exports-variable/expected.js @@ -4,6 +4,7 @@ System.register([], function (_export) { _export("foo7", foo7); function foo7() {} + return { setters: [], execute: function () { 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 7395d1a5f7..79b102762c 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-default/expected.js @@ -22,6 +22,7 @@ }; module.exports = _default; + function foo() {} var Foo = function Foo() { diff --git a/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js index abd2b1fee0..f162e35935 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js @@ -18,6 +18,7 @@ var foo4 = exports.foo4 = 2; var foo5 = exports.foo5 = undefined; var foo6 = exports.foo6 = 3; + function foo7() {} var foo8 = exports.foo8 = function foo8() { diff --git a/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js index 1241f1f68e..cf7ce81abb 100644 --- a/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js @@ -9,6 +9,7 @@ exports.nextOdd = nextOdd; var isEven = _evens.isEven; + function nextOdd(n) { return isEven(n) ? n + 1 : n + 2; } diff --git a/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/actual.js b/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/actual.js new file mode 100644 index 0000000000..2a6c93164c --- /dev/null +++ b/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/actual.js @@ -0,0 +1,3 @@ +export function foo() {} + +export function bar() {} diff --git a/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js b/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js new file mode 100644 index 0000000000..04468c239c --- /dev/null +++ b/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/expected.js @@ -0,0 +1,9 @@ +"use strict"; + +export { foo as foo }; + +export { bar as bar }; + +function foo() {} + +function bar() {} diff --git a/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/options.json b/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/options.json new file mode 100644 index 0000000000..896d86d463 --- /dev/null +++ b/test/fixtures/transformation/misc/enforce-newline-modules-blacklist/options.json @@ -0,0 +1,3 @@ +{ + "blacklist": ["es6.modules"] +}