handle comments and use strict directives better - fixes #1030

This commit is contained in:
Sebastian McKenzie
2015-03-16 13:07:28 +11:00
parent 9f037fa75e
commit bc9c1ab61e
8 changed files with 33 additions and 6 deletions

View File

@@ -2,6 +2,17 @@ import * as t from "../../../types";
export function Program(program, parent, scope, file) {
if (file.transformers.strict.canRun()) {
program.body.unshift(t.expressionStatement(t.literal("use strict")));
var directive = file.get("existingStrictDirective");
if (!directive) {
directive = t.expressionStatement(t.literal("use strict"));
var first = program.body[0];
if (first) {
directive.leadingComments = first.leadingComments;
first.leadingComments = [];
}
}
program.body.unshift(directive);
}
}

View File

@@ -1,10 +1,10 @@
import * as messages from "../../../messages";
import * as t from "../../../types";
export function Program(program) {
export function Program(program, parent, scope, file) {
var first = program.body[0];
if (t.isExpressionStatement(first) && t.isLiteral(first.expression, { value: "use strict" })) {
program.body.shift();
file.set("existingStrictDirective", program.body.shift());
}
}