fix corner case in collapse_vars (#3139)

This commit is contained in:
Alex Lam S.L
2018-05-19 05:45:14 +08:00
committed by GitHub
parent 0b7c70f726
commit 4fc39d8dad
2 changed files with 25 additions and 2 deletions

View File

@@ -1240,7 +1240,10 @@ merge(Compressor.prototype, {
} }
function should_stop(node, parent) { function should_stop(node, parent) {
if (node instanceof AST_Assign) return node.operator != "=" && lhs.equivalent_to(node.left); if (parent instanceof AST_For) return node !== parent.init;
if (node instanceof AST_Assign) {
return node.operator != "=" && lhs.equivalent_to(node.left);
}
if (node instanceof AST_Call) { if (node instanceof AST_Call) {
return lhs instanceof AST_PropAccess && lhs.equivalent_to(node.expression); return lhs instanceof AST_PropAccess && lhs.equivalent_to(node.expression);
} }
@@ -1249,7 +1252,6 @@ merge(Compressor.prototype, {
if (node instanceof AST_LoopControl) return true; if (node instanceof AST_LoopControl) return true;
if (node instanceof AST_Try) return true; if (node instanceof AST_Try) return true;
if (node instanceof AST_With) return true; if (node instanceof AST_With) return true;
if (parent instanceof AST_For) return node !== parent.init;
if (replace_all) return false; if (replace_all) return false;
return node instanceof AST_SymbolRef && !node.is_declared(compressor); return node instanceof AST_SymbolRef && !node.is_declared(compressor);
} }

View File

@@ -4931,6 +4931,27 @@ collapse_rhs_lhs_2: {
expect_stdout: "PASS" expect_stdout: "PASS"
} }
collapse_rhs_loop: {
options = {
collapse_vars: true,
}
input: {
var s;
s = "<tpl>PASS</tpl>";
for (var m, r = /<tpl>(.*)<\/tpl>/; m = s.match(r);)
s = s.replace(m[0], m[1]);
console.log(s);
}
expect: {
var s;
s = "<tpl>PASS</tpl>";
for (var m, r = /<tpl>(.*)<\/tpl>/; m = s.match(r);)
s = s.replace(m[0], m[1]);
console.log(s);
}
expect_stdout: "PASS"
}
collapse_rhs_side_effects: { collapse_rhs_side_effects: {
options = { options = {
collapse_vars: true, collapse_vars: true,