@@ -1614,6 +1614,14 @@ merge(Compressor.prototype, {
|
||||
var scan_lhs = lhs && !side_effects && !is_lhs_read_only(lhs, compressor);
|
||||
var scan_rhs = foldable(candidate);
|
||||
if (!scan_lhs && !scan_rhs) continue;
|
||||
var funarg = candidate.name instanceof AST_SymbolFunarg;
|
||||
var may_throw = return_false;
|
||||
if (candidate.may_throw(compressor)) {
|
||||
if (funarg && scope instanceof AST_AsyncFunction) continue;
|
||||
may_throw = in_try ? function(node) {
|
||||
return node.has_side_effects(compressor);
|
||||
} : side_effects_external;
|
||||
}
|
||||
var read_toplevel = false;
|
||||
var modify_toplevel = false;
|
||||
// Locate symbols which may execute code outside of scanning range
|
||||
@@ -1622,10 +1630,6 @@ merge(Compressor.prototype, {
|
||||
var rvalue = get_rvalue(candidate);
|
||||
if (!side_effects) side_effects = value_has_side_effects();
|
||||
var replace_all = replace_all_symbols(candidate);
|
||||
var may_throw = candidate.may_throw(compressor) ? in_try ? function(node) {
|
||||
return node.has_side_effects(compressor);
|
||||
} : side_effects_external : return_false;
|
||||
var funarg = candidate.name instanceof AST_SymbolFunarg;
|
||||
var hit = funarg;
|
||||
var abort = false;
|
||||
var replaced = 0;
|
||||
|
||||
@@ -444,3 +444,30 @@ issue_4349_3: {
|
||||
expect_stdout: "function"
|
||||
node_version: ">=8"
|
||||
}
|
||||
|
||||
issue_4359: {
|
||||
options = {
|
||||
collapse_vars: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
try {
|
||||
(async function(a) {
|
||||
return a;
|
||||
})(A);
|
||||
} catch (e) {
|
||||
console.log("PASS");
|
||||
}
|
||||
}
|
||||
expect: {
|
||||
try {
|
||||
(async function(a) {
|
||||
return a;
|
||||
})(A);
|
||||
} catch (e) {
|
||||
console.log("PASS");
|
||||
}
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
node_version: ">=8"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user