fix corner case in collapse_vars (#3139)
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user