From 234d9997c88de4d20c46ae5830de04b08e99b546 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Sat, 18 Oct 2014 15:44:44 +1100 Subject: [PATCH] add "use strict" declaration - closes #78 --- lib/6to5/transformers/_use-strict.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/6to5/transformers/_use-strict.js diff --git a/lib/6to5/transformers/_use-strict.js b/lib/6to5/transformers/_use-strict.js new file mode 100644 index 0000000000..11d682480a --- /dev/null +++ b/lib/6to5/transformers/_use-strict.js @@ -0,0 +1,15 @@ +var b = require("recast").types.builders; + +module.exports = function (ast, file) { + var body = ast.program.body; + var first = body[0]; + + var noStrict = !first || first.type !== "ExpressionStatement" || first.expression.type !== "Literal" || first.expression.value !== "use strict"; + + if (noStrict) { + if (file.opts._noStrict) return; + body.unshift(b.expressionStatement(b.literal("use strict"))); + } else { + if (file.opts._noStrict) body.shift(); + } +};