From 2ba27c73d7439375984684a157b3b6563ca939b7 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Sat, 18 Jun 2016 12:32:54 -0700 Subject: [PATCH] Allow empty 'export {};' statements - fixes T7439 --- .../src/index.js | 50 +++++++++---------- .../test/fixtures/strict/export-3/actual.js | 3 ++ .../test/fixtures/strict/export-3/expected.js | 3 ++ 3 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/actual.js create mode 100644 packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/expected.js diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js index 9a5e1744af..260af8e5c3 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js @@ -308,37 +308,35 @@ export default function () { } let specifiers = path.get("specifiers"); - if (specifiers.length) { - let nodes = []; - let source = path.node.source; - if (source) { - let ref = addRequire(source.value, path.node._blockHoist); + let nodes = []; + let source = path.node.source; + if (source) { + let ref = addRequire(source.value, path.node._blockHoist); - for (let specifier of specifiers) { - if (specifier.isExportNamespaceSpecifier()) { - // todo - } else if (specifier.isExportDefaultSpecifier()) { - // todo - } else if (specifier.isExportSpecifier()) { - if (specifier.node.local.name === "default") { - topNodes.push(buildExportsFrom(t.stringLiteral(specifier.node.exported.name), t.memberExpression(t.callExpression(this.addHelper("interopRequireDefault"), [ref]), specifier.node.local))); - } else { - topNodes.push(buildExportsFrom(t.stringLiteral(specifier.node.exported.name), t.memberExpression(ref, specifier.node.local))); - } - nonHoistedExportNames[specifier.node.exported.name] = true; - } - } - } else { - for (let specifier of specifiers) { - if (specifier.isExportSpecifier()) { - addTo(exports, specifier.node.local.name, specifier.node.exported); - nonHoistedExportNames[specifier.node.exported.name] = true; - nodes.push(buildExportsAssignment(specifier.node.exported, specifier.node.local)); + for (let specifier of specifiers) { + if (specifier.isExportNamespaceSpecifier()) { + // todo + } else if (specifier.isExportDefaultSpecifier()) { + // todo + } else if (specifier.isExportSpecifier()) { + if (specifier.node.local.name === "default") { + topNodes.push(buildExportsFrom(t.stringLiteral(specifier.node.exported.name), t.memberExpression(t.callExpression(this.addHelper("interopRequireDefault"), [ref]), specifier.node.local))); + } else { + topNodes.push(buildExportsFrom(t.stringLiteral(specifier.node.exported.name), t.memberExpression(ref, specifier.node.local))); } + nonHoistedExportNames[specifier.node.exported.name] = true; + } + } + } else { + for (let specifier of specifiers) { + if (specifier.isExportSpecifier()) { + addTo(exports, specifier.node.local.name, specifier.node.exported); + nonHoistedExportNames[specifier.node.exported.name] = true; + nodes.push(buildExportsAssignment(specifier.node.exported, specifier.node.local)); } } - path.replaceWithMultiple(nodes); } + path.replaceWithMultiple(nodes); } else if (path.isExportAllDeclaration()) { let exportNode = buildExportAll({ OBJECT: addRequire(path.node.source.value, path.node._blockHoist) diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/actual.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/actual.js new file mode 100644 index 0000000000..589dcb8091 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/actual.js @@ -0,0 +1,3 @@ +export {}; + +export {} from 'foo'; diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/expected.js b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/expected.js new file mode 100644 index 0000000000..ea00eaae6f --- /dev/null +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/strict/export-3/expected.js @@ -0,0 +1,3 @@ +'use strict'; + +var _foo = require('foo');