diff --git a/lib/6to5/transformation/modules/amd.js b/lib/6to5/transformation/modules/amd.js index 3a0469cd7e..94c168f3eb 100644 --- a/lib/6to5/transformation/modules/amd.js +++ b/lib/6to5/transformation/modules/amd.js @@ -80,6 +80,10 @@ AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) { } else { // import foo from "foo"; ref = t.memberExpression(this._push(node), id, false); + + if (specifier.default) { + ref = t.callExpression(this.file.addDeclaration("interop-require"), [ref]); + } } nodes.push(t.variableDeclaration("var", [ diff --git a/test/fixtures/transformation/es6-modules-amd/imports-default/expected.js b/test/fixtures/transformation/es6-modules-amd/imports-default/expected.js index e13da123e2..05ef11cead 100644 --- a/test/fixtures/transformation/es6-modules-amd/imports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/imports-default/expected.js @@ -1,6 +1,11 @@ define(["exports", "foo"], function (exports, _foo) { "use strict"; - var foo = _foo["default"]; + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo["default"]); + var foo = _foo["default"]; }); diff --git a/test/fixtures/transformation/es6-modules-amd/imports-mixing/expected.js b/test/fixtures/transformation/es6-modules-amd/imports-mixing/expected.js index 5ff7a48899..884403c1a5 100644 --- a/test/fixtures/transformation/es6-modules-amd/imports-mixing/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/imports-mixing/expected.js @@ -1,6 +1,11 @@ define(["exports", "foo"], function (exports, _foo) { "use strict"; - var foo = _foo["default"]; + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo["default"]); + var xyz = _foo.baz; }); diff --git a/test/fixtures/transformation/es6-modules-amd/overview/expected.js b/test/fixtures/transformation/es6-modules-amd/overview/expected.js index 5fc0d32601..5d42f028e1 100644 --- a/test/fixtures/transformation/es6-modules-amd/overview/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/overview/expected.js @@ -1,7 +1,12 @@ define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) { "use strict"; - var foo = _foo["default"]; + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo["default"]); + var foo = _foo; var bar = _foo.bar; var bar = _foo.foo; diff --git a/test/fixtures/transformation/es6-modules-umd/imports-default/expected.js b/test/fixtures/transformation/es6-modules-umd/imports-default/expected.js index 10ec822646..94f58aca2a 100644 --- a/test/fixtures/transformation/es6-modules-umd/imports-default/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/imports-default/expected.js @@ -7,6 +7,11 @@ })(function (exports, _foo) { "use strict"; - var foo = _foo["default"]; + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo["default"]); + var foo = _foo["default"]; }); diff --git a/test/fixtures/transformation/es6-modules-umd/imports-mixing/expected.js b/test/fixtures/transformation/es6-modules-umd/imports-mixing/expected.js index 35f4b65e7f..00ace69089 100644 --- a/test/fixtures/transformation/es6-modules-umd/imports-mixing/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/imports-mixing/expected.js @@ -7,6 +7,11 @@ })(function (exports, _foo) { "use strict"; - var foo = _foo["default"]; + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo["default"]); + var xyz = _foo.baz; }); diff --git a/test/fixtures/transformation/es6-modules-umd/overview/expected.js b/test/fixtures/transformation/es6-modules-umd/overview/expected.js index 6a6a53fdc5..9409903d86 100644 --- a/test/fixtures/transformation/es6-modules-umd/overview/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/overview/expected.js @@ -7,7 +7,12 @@ })(function (exports, _foo, _fooBar, _directoryFooBar) { "use strict"; - var foo = _foo["default"]; + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo["default"]); + var foo = _foo; var bar = _foo.bar; var bar = _foo.foo;