diff --git a/lib/6to5/transformation/modules/_default.js b/lib/6to5/transformation/modules/_default.js index 495ffd60c5..300c12ab18 100644 --- a/lib/6to5/transformation/modules/_default.js +++ b/lib/6to5/transformation/modules/_default.js @@ -212,6 +212,12 @@ DefaultFormatter.prototype.getExternalReference = function (node, nodes) { } }; +DefaultFormatter.prototype.checkExportIdentifier = function (node) { + if (t.isIdentifier(node, { name: "__esModule" })) { + throw this.file.errorWithNode(node, "Illegal export __esModule - this is used internally for CommonJS interop"); + } +}; + DefaultFormatter.prototype.exportSpecifier = function (specifier, node, nodes) { var inherits = false; if (node.specifiers.length === 1) inherits = node; @@ -251,6 +257,7 @@ DefaultFormatter.prototype.buildExportsWildcard = function (objectIdentifier) { }; DefaultFormatter.prototype.buildExportsAssignment = function (id, init) { + this.checkExportIdentifier(id); return util.template("exports-assign", { VALUE: init, KEY: id diff --git a/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule-2/actual.js b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule-2/actual.js new file mode 100644 index 0000000000..2d4f3f2cd7 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule-2/actual.js @@ -0,0 +1 @@ +export { __esModule }; diff --git a/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule-2/options.json b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule-2/options.json new file mode 100644 index 0000000000..5e33c8dbe1 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule-2/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal export __esModule - this is used internally for CommonJS interop" +} diff --git a/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule/actual.js b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule/actual.js new file mode 100644 index 0000000000..c8e52fd594 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule/actual.js @@ -0,0 +1 @@ +export var __esModule = false; diff --git a/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule/options.json b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule/options.json new file mode 100644 index 0000000000..5e33c8dbe1 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common/illegal-export-esmodule/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal export __esModule - this is used internally for CommonJS interop" +}