diff --git a/lib/6to5/transformation/transform.js b/lib/6to5/transformation/transform.js index 74079d5d0b..9d32b62fa9 100644 --- a/lib/6to5/transformation/transform.js +++ b/lib/6to5/transformation/transform.js @@ -95,6 +95,7 @@ _.each({ typeofSymbol: require("./transformers/optional-typeof-symbol"), coreAliasing: require("./transformers/optional-core-aliasing"), + externalRegenerator: require("./transformers/optional-external-regenerator-runtime"), undefinedToVoid: require("./transformers/optional-undefined-to-void"), // spec diff --git a/lib/6to5/transformation/transformers/optional-external-regenerator-runtime.js b/lib/6to5/transformation/transformers/optional-external-regenerator-runtime.js new file mode 100644 index 0000000000..9294a6c76e --- /dev/null +++ b/lib/6to5/transformation/transformers/optional-external-regenerator-runtime.js @@ -0,0 +1,16 @@ +var t = require("../../types"); + +exports.optional = true; + +exports.ast = { + enter: function (ast, file) { + file._regeneratorId = file.addImport("regenerator/runtime-module", "regeneratorRuntime"); + } +}; + +exports.MemberExpression = function (node, parent, scope, context, file) { + var obj = node.object; + var prop = node.property; + if (!t.isReferenced(node, parent) || !t.isReferenced(obj, node)) return; + if (obj.name === "regeneratorRuntime") return t.memberExpression(file._regeneratorId, prop); +};