fix corner case in evaluate (#3344)

This commit is contained in:
Alex Lam S.L
2019-03-18 21:24:42 +08:00
committed by GitHub
parent 4430a436eb
commit 7aa7f21872
2 changed files with 48 additions and 4 deletions

View File

@@ -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;
});