fix invalid AST_For.init

Turns out the only place in `Compressor` which can generate invalid `AST_For.init` is within `drop_unused()`, so focus the fix-up efforts.

supercedes #1652
fixes #1656
This commit is contained in:
alexlamsl 2017-03-25 01:58:38 +08:00
parent b1abe92e1a
commit 3ad69fb652
2 changed files with 17 additions and 1 deletions

View File

@ -1961,6 +1961,9 @@ merge(Compressor.prototype, {
return in_list ? MAP.splice(body) : make_node(AST_BlockStatement, node, {
body: body
});
} else if (is_empty(node.init)) {
node.init = null;
return node;
}
}
if (node instanceof AST_Scope && node !== self)
@ -2327,7 +2330,6 @@ merge(Compressor.prototype, {
};
OPT(AST_For, function(self, compressor){
if (is_empty(self.init)) self.init = null;
if (!compressor.option("loops")) return self;
if (self.condition) {
var cond = self.condition.evaluate(compressor);

View File

@ -791,3 +791,17 @@ issue_1583: {
}
}
}
issue_1656: {
options = {
toplevel: true,
unused: true,
}
beautify = {
beautify: true,
}
input: {
for(var a=0;;);
}
expect_exact: "for (;;) ;"
}