diff --git a/lib/6to5/transformation/modules/_default.js b/lib/6to5/transformation/modules/_default.js index 084197352a..d067eece2a 100644 --- a/lib/6to5/transformation/modules/_default.js +++ b/lib/6to5/transformation/modules/_default.js @@ -142,10 +142,11 @@ DefaultFormatter.prototype._exportSpecifier = function (getRef, specifier, node, nodes.push(this._exportsWildcard(getRef(), node)); } else { var ref; - if (t.isSpecifierDefault(specifier.id) || this.noInteropRequire) { - ref = t.memberExpression(getRef(), specifier.id); - } else { + if (t.isSpecifierDefault(specifier) && !this.noInteropRequire) { + // importing a default so we need to normalise it ref = t.callExpression(this.file.addHelper("interop-require"), [getRef()]); + } else { + ref = t.memberExpression(getRef(), specifier.id); } // export { foo } from "test"; diff --git a/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js b/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js index 7d20f967c2..0ff3782345 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js @@ -1,10 +1,6 @@ define(["exports", "foo"], function (exports, _foo) { "use strict"; - var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); - }; - var _interopRequireWildcard = function (obj) { return obj && obj.constructor === Object ? obj : { "default": obj @@ -21,11 +17,11 @@ define(["exports", "foo"], function (exports, _foo) { _exportsWildcard(_interopRequireWildcard(_foo)); - exports.foo = _interopRequire(_foo); - exports.foo = _interopRequire(_foo); - exports.bar = _interopRequire(_foo); - exports.bar = _interopRequire(_foo); - exports["default"] = _interopRequire(_foo); - exports["default"] = _interopRequire(_foo); - exports.bar = _interopRequire(_foo); -}); \ No newline at end of file + exports.foo = _foo.foo; + exports.foo = _foo.foo; + exports.bar = _foo.bar; + exports.bar = _foo.foo; + exports["default"] = _foo.foo; + exports["default"] = _foo.foo; + exports.bar = _foo.bar; +}); diff --git a/test/fixtures/transformation/es6-modules-common/exports-from/expected.js b/test/fixtures/transformation/es6-modules-common/exports-from/expected.js index 1107502014..2264dd7c1a 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-from/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-from/expected.js @@ -1,9 +1,5 @@ "use strict"; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - var _interopRequireWildcard = function (obj) { return obj && obj.constructor === Object ? obj : { "default": obj @@ -20,10 +16,10 @@ var _exportsWildcard = function (obj) { _exportsWildcard(_interopRequireWildcard(require("foo"))); -exports.foo = _interopRequire(require("foo")); -exports.foo = _interopRequire(require("foo")); -exports.bar = _interopRequire(require("foo")); -exports.bar = _interopRequire(require("foo")); -exports["default"] = _interopRequire(require("foo")); -exports["default"] = _interopRequire(require("foo")); -exports.bar = _interopRequire(require("foo")); +exports.foo = require("foo").foo; +exports.foo = require("foo").foo; +exports.bar = require("foo").bar; +exports.bar = require("foo").foo; +exports["default"] = require("foo").foo; +exports["default"] = require("foo").foo; +exports.bar = require("foo").bar; diff --git a/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js b/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js index 1878d5a1e1..2f84be3a91 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js @@ -7,10 +7,6 @@ })(function (exports, _foo) { "use strict"; - var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); - }; - var _interopRequireWildcard = function (obj) { return obj && obj.constructor === Object ? obj : { "default": obj @@ -27,11 +23,11 @@ _exportsWildcard(_interopRequireWildcard(_foo)); - exports.foo = _interopRequire(_foo); - exports.foo = _interopRequire(_foo); - exports.bar = _interopRequire(_foo); - exports.bar = _interopRequire(_foo); - exports["default"] = _interopRequire(_foo); - exports["default"] = _interopRequire(_foo); - exports.bar = _interopRequire(_foo); -}); \ No newline at end of file + exports.foo = _foo.foo; + exports.foo = _foo.foo; + exports.bar = _foo.bar; + exports.bar = _foo.foo; + exports["default"] = _foo.foo; + exports["default"] = _foo.foo; + exports.bar = _foo.bar; +});