diff --git a/lib/6to5/transformation/helpers/use-strict.js b/lib/6to5/transformation/helpers/use-strict.js new file mode 100644 index 0000000000..6ef8e3baf0 --- /dev/null +++ b/lib/6to5/transformation/helpers/use-strict.js @@ -0,0 +1,19 @@ +var t = require("../../types"); + +exports.has = function (node) { + var first = node.body[0]; + return t.isExpressionStatement(first) && t.isLiteral(first.expression, { value: "use strict" }); +}; + +exports.wrap = function (node, callback) { + var useStrictNode; + if (exports.has(node)) { + useStrictNode = node.body.shift(); + } + + callback(); + + if (useStrictNode) { + node.body.unshift(useStrictNode); + } +}; diff --git a/lib/6to5/transformation/modules/system.js b/lib/6to5/transformation/modules/system.js index d8a01218e3..b70c8423a4 100644 --- a/lib/6to5/transformation/modules/system.js +++ b/lib/6to5/transformation/modules/system.js @@ -1,7 +1,7 @@ module.exports = SystemFormatter; var AMDFormatter = require("./amd"); -var useStrict = require("../transformers/use-strict"); +var useStrict = require("../helpers/use-strict"); var traverse = require("../../traverse"); var util = require("../../util"); var t = require("../../types"); @@ -171,7 +171,7 @@ SystemFormatter.prototype.transform = function (ast) { handlerBody.push(returnStatement); - if (useStrict._has(block)) { + if (useStrict.has(block)) { handlerBody.unshift(block.body.shift()); } diff --git a/lib/6to5/transformation/transformers/_block-hoist.js b/lib/6to5/transformation/transformers/_block-hoist.js index e024a8a193..048ea908c4 100644 --- a/lib/6to5/transformation/transformers/_block-hoist.js +++ b/lib/6to5/transformation/transformers/_block-hoist.js @@ -1,4 +1,4 @@ -var useStrict = require("./use-strict"); +var useStrict = require("../helpers/use-strict"); var _ = require("lodash"); // Priority: @@ -18,7 +18,7 @@ exports.Program = { } if (!hasChange) return; - useStrict._wrap(node, function () { + useStrict.wrap(node, function () { var nodePriorities = _.groupBy(node.body, function (bodyNode) { var priority = bodyNode._blockHoist; if (priority == null) priority = 1; diff --git a/lib/6to5/transformation/transformers/_declarations.js b/lib/6to5/transformation/transformers/_declarations.js index 20fbfadb6e..e2b6c299b2 100644 --- a/lib/6to5/transformation/transformers/_declarations.js +++ b/lib/6to5/transformation/transformers/_declarations.js @@ -1,4 +1,4 @@ -var useStrict = require("./use-strict"); +var useStrict = require("../helpers/use-strict"); var t = require("../../types"); exports.secondPass = true; @@ -8,7 +8,7 @@ exports.Program = function (node) { var kinds = {}; var kind; - useStrict._wrap(node, function () { + useStrict.wrap(node, function () { for (var i in node._declarations) { var declar = node._declarations[i]; diff --git a/lib/6to5/transformation/transformers/use-strict.js b/lib/6to5/transformation/transformers/use-strict.js index bd9fd9c651..41eec48c14 100644 --- a/lib/6to5/transformation/transformers/use-strict.js +++ b/lib/6to5/transformation/transformers/use-strict.js @@ -1,26 +1,9 @@ -var t = require("../../types"); - -exports._has = function (node) { - var first = node.body[0]; - return t.isExpressionStatement(first) && t.isLiteral(first.expression, { value: "use strict" }); -}; - -exports._wrap = function (node, callback) { - var useStrictNode; - if (exports._has(node)) { - useStrictNode = node.body.shift(); - } - - callback(); - - if (useStrictNode) { - node.body.unshift(useStrictNode); - } -}; +var useStrict = require("../helpers/use-strict"); +var t = require("../../types"); exports.ast = { exit: function (ast) { - if (!exports._has(ast.program)) { + if (!useStrict.has(ast.program)) { ast.program.body.unshift(t.expressionStatement(t.literal("use strict"))); } }