fix corner case in evaluate (#3344)
This commit is contained in:
@@ -537,13 +537,11 @@ merge(Compressor.prototype, {
|
||||
var d = sym.definition();
|
||||
var safe = safe_to_assign(tw, d, sym.scope, node.right);
|
||||
d.assignments++;
|
||||
if (!safe) return;
|
||||
var fixed = d.fixed;
|
||||
if (!fixed && node.operator != "=") return;
|
||||
var eq = node.operator == "=";
|
||||
var value = eq ? node.right : node;
|
||||
if (is_modified(compressor, tw, node, value, 0)) return;
|
||||
d.references.push(sym);
|
||||
if (!eq) d.chained = true;
|
||||
d.fixed = eq ? function() {
|
||||
return node.right;
|
||||
@@ -554,6 +552,8 @@ merge(Compressor.prototype, {
|
||||
right: node.right
|
||||
});
|
||||
};
|
||||
if (!safe) return;
|
||||
d.references.push(sym);
|
||||
mark(tw, d, false);
|
||||
node.right.walk(tw);
|
||||
mark(tw, d, true);
|
||||
@@ -783,10 +783,8 @@ merge(Compressor.prototype, {
|
||||
var d = exp.definition();
|
||||
var safe = safe_to_assign(tw, d, exp.scope, true);
|
||||
d.assignments++;
|
||||
if (!safe) return;
|
||||
var fixed = d.fixed;
|
||||
if (!fixed) return;
|
||||
d.references.push(exp);
|
||||
d.chained = true;
|
||||
d.fixed = function() {
|
||||
return make_node(AST_Binary, node, {
|
||||
@@ -800,6 +798,8 @@ merge(Compressor.prototype, {
|
||||
})
|
||||
});
|
||||
};
|
||||
if (!safe) return;
|
||||
d.references.push(exp);
|
||||
mark(tw, d, true);
|
||||
return true;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user