@@ -4674,9 +4674,13 @@ merge(Compressor.prototype, {
|
||||
var rhs = assign.right;
|
||||
if (!assign.write_only) return rhs;
|
||||
if (!(rhs instanceof AST_Binary && lazy_op[rhs.operator])) return rhs;
|
||||
var sym = assign.left;
|
||||
if (!(sym instanceof AST_SymbolRef) || sym.name != rhs.left.name) return rhs;
|
||||
return rhs.right.has_side_effects(compressor) ? rhs : rhs.right;
|
||||
if (!(rhs.left instanceof AST_SymbolRef)) return rhs;
|
||||
if (!(assign.left instanceof AST_SymbolRef)) return rhs;
|
||||
var def = assign.left.definition();
|
||||
if (rhs.left.definition() !== def) return rhs;
|
||||
if (rhs.right.has_side_effects(compressor)) return rhs;
|
||||
if (track_assigns(def, rhs.left)) add_assigns(def, rhs.left);
|
||||
return rhs.right;
|
||||
}
|
||||
|
||||
function scan_ref_scoped(node, descend, init) {
|
||||
|
||||
@@ -2755,3 +2755,37 @@ issue_3962_2: {
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
issue_3986: {
|
||||
options = {
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
var a = 0, b = 0;
|
||||
(function() {
|
||||
try {
|
||||
throw 42;
|
||||
} catch (e) {
|
||||
a++;
|
||||
}
|
||||
b = b && 0;
|
||||
})(b *= a);
|
||||
console.log(b);
|
||||
}
|
||||
expect: {
|
||||
var a = 0, b = 0;
|
||||
(function() {
|
||||
try {
|
||||
throw 42;
|
||||
} catch (e) {
|
||||
a++;
|
||||
}
|
||||
b = b && 0;
|
||||
})(b *= a);
|
||||
console.log(b);
|
||||
}
|
||||
expect_stdout: "0"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user