From e985d8b25de9f3b281a8a700c34c64099acc74b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alu=C3=ADsio=20Augusto=20Silva=20Gon=C3=A7alves?= Date: Wed, 14 Jan 2015 14:00:33 -0200 Subject: [PATCH] Don't use interopRequire for dynamic imports They don't need it at all and this also allows use of `externalRuntime` without fear of the runtime ending up being loaded after it's used. --- lib/6to5/transformation/modules/amd.js | 2 +- lib/6to5/transformation/modules/common.js | 3 ++- .../transformers/optional-external-runtime.js | 1 - .../optional-bluebird-coroutines/expression/expected.js | 6 +----- .../optional-bluebird-coroutines/statement/expected.js | 6 +----- .../optional-core-aliasing/aliased-constructors/expected.js | 6 +----- .../optional-core-aliasing/es6-destructuring/expected.js | 6 +----- .../optional-core-aliasing/es6-for-of/expected.js | 6 +----- .../optional-core-aliasing/es6-spread/expected.js | 6 +----- .../es7-array-comprehensions/expected.js | 6 +----- 10 files changed, 10 insertions(+), 38 deletions(-) diff --git a/lib/6to5/transformation/modules/amd.js b/lib/6to5/transformation/modules/amd.js index d97ba66118..0eb61407b2 100644 --- a/lib/6to5/transformation/modules/amd.js +++ b/lib/6to5/transformation/modules/amd.js @@ -87,7 +87,7 @@ AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) { var key = t.getSpecifierName(specifier); var ref = this._push(node); - if (t.isImportBatchSpecifier(specifier) || node._noInteropRequire) { + if (t.isImportBatchSpecifier(specifier) || _.contains(this.file.dynamicImports, node)) { // import * as bar from "foo"; } else if (t.isSpecifierDefault(specifier) && !this.noInteropRequire) { // import foo from "foo"; diff --git a/lib/6to5/transformation/modules/common.js b/lib/6to5/transformation/modules/common.js index c44f34078f..950b35790e 100644 --- a/lib/6to5/transformation/modules/common.js +++ b/lib/6to5/transformation/modules/common.js @@ -6,6 +6,7 @@ var DefaultFormatter = require("./_default"); var traverse = require("../../traverse"); var util = require("../../util"); var t = require("../../types"); +var _ = require("lodash"); function CommonJSFormatter(file) { DefaultFormatter.apply(this, arguments); @@ -27,7 +28,7 @@ CommonJSFormatter.prototype.importSpecifier = function (specifier, node, nodes) // import foo from "foo"; if (t.isSpecifierDefault(specifier)) { var ref = util.template("require", {MODULE_NAME: node.source}); - if (!node._noInteropRequire) { + if (!_.contains(this.file.dynamicImports, node)) { ref = t.callExpression(this.file.addHelper("interop-require"), [ref]); } nodes.push(t.variableDeclaration("var", [t.variableDeclarator(variableName, ref)])); diff --git a/lib/6to5/transformation/transformers/optional-external-runtime.js b/lib/6to5/transformation/transformers/optional-external-runtime.js index a2f52667cf..ff39454e4d 100644 --- a/lib/6to5/transformation/transformers/optional-external-runtime.js +++ b/lib/6to5/transformation/transformers/optional-external-runtime.js @@ -6,6 +6,5 @@ exports.optional = true; exports.ast = { enter: function (ast, file) { file.opts.runtime = file.addImport(file.opts.runtime, "to5Runtime").name; - file.dynamicImports[file.dynamicImports.length - 1]._noInteropRequire = true; } }; diff --git a/test/fixtures/transformation/optional-bluebird-coroutines/expression/expected.js b/test/fixtures/transformation/optional-bluebird-coroutines/expression/expected.js index 13943a98de..ed68858b19 100644 --- a/test/fixtures/transformation/optional-bluebird-coroutines/expression/expected.js +++ b/test/fixtures/transformation/optional-bluebird-coroutines/expression/expected.js @@ -1,10 +1,6 @@ "use strict"; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - -var _bluebird = _interopRequire(require("bluebird")); +var _bluebird = require("bluebird"); var foo = _bluebird.coroutine(function* () { var wat = yield bar(); diff --git a/test/fixtures/transformation/optional-bluebird-coroutines/statement/expected.js b/test/fixtures/transformation/optional-bluebird-coroutines/statement/expected.js index 9b200b29f0..c5dbaaf5d1 100644 --- a/test/fixtures/transformation/optional-bluebird-coroutines/statement/expected.js +++ b/test/fixtures/transformation/optional-bluebird-coroutines/statement/expected.js @@ -1,10 +1,6 @@ "use strict"; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - -var _bluebird = _interopRequire(require("bluebird")); +var _bluebird = require("bluebird"); var foo = _bluebird.coroutine(function* foo() { var wat = yield bar(); diff --git a/test/fixtures/transformation/optional-core-aliasing/aliased-constructors/expected.js b/test/fixtures/transformation/optional-core-aliasing/aliased-constructors/expected.js index 7c6e3f9ba2..8c6ff60ed1 100644 --- a/test/fixtures/transformation/optional-core-aliasing/aliased-constructors/expected.js +++ b/test/fixtures/transformation/optional-core-aliasing/aliased-constructors/expected.js @@ -1,10 +1,6 @@ "use strict"; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - -var _core = _interopRequire(require("core-js/library")); +var _core = require("core-js/library"); obj.constructor === Object; obj.constructor === _core.Promise; diff --git a/test/fixtures/transformation/optional-core-aliasing/es6-destructuring/expected.js b/test/fixtures/transformation/optional-core-aliasing/es6-destructuring/expected.js index fc43ff5423..15e3ce78b9 100644 --- a/test/fixtures/transformation/optional-core-aliasing/es6-destructuring/expected.js +++ b/test/fixtures/transformation/optional-core-aliasing/es6-destructuring/expected.js @@ -16,11 +16,7 @@ var _slicedToArray = function (arr, i) { } }; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - -var _core = _interopRequire(require("core-js/library")); +var _core = require("core-js/library"); var _ref = ["hello", [", ", "junk"], ["world"]]; diff --git a/test/fixtures/transformation/optional-core-aliasing/es6-for-of/expected.js b/test/fixtures/transformation/optional-core-aliasing/es6-for-of/expected.js index 3bf1f53a05..2669fd4d0c 100644 --- a/test/fixtures/transformation/optional-core-aliasing/es6-for-of/expected.js +++ b/test/fixtures/transformation/optional-core-aliasing/es6-for-of/expected.js @@ -1,10 +1,6 @@ "use strict"; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - -var _core = _interopRequire(require("core-js/library")); +var _core = require("core-js/library"); for (var _iterator = _core.$for.getIterator(arr), _step; !(_step = _iterator.next()).done;) { var i = _step.value; diff --git a/test/fixtures/transformation/optional-core-aliasing/es6-spread/expected.js b/test/fixtures/transformation/optional-core-aliasing/es6-spread/expected.js index 4d00347582..2a41ccd997 100644 --- a/test/fixtures/transformation/optional-core-aliasing/es6-spread/expected.js +++ b/test/fixtures/transformation/optional-core-aliasing/es6-spread/expected.js @@ -4,10 +4,6 @@ var _toArray = function (arr) { return Array.isArray(arr) ? arr : _core.Array.from(arr); }; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - -var _core = _interopRequire(require("core-js/library")); +var _core = require("core-js/library"); var lyrics = ["head", "and", "toes"].concat(_toArray(parts)); diff --git a/test/fixtures/transformation/optional-core-aliasing/es7-array-comprehensions/expected.js b/test/fixtures/transformation/optional-core-aliasing/es7-array-comprehensions/expected.js index 01333ca8f9..0bf67a612a 100644 --- a/test/fixtures/transformation/optional-core-aliasing/es7-array-comprehensions/expected.js +++ b/test/fixtures/transformation/optional-core-aliasing/es7-array-comprehensions/expected.js @@ -1,10 +1,6 @@ "use strict"; -var _interopRequire = function (obj) { - return obj && (obj["default"] || obj); -}; - -var _core = _interopRequire(require("core-js/library")); +var _core = require("core-js/library"); var arr = (function () { var _arr = [];