@@ -5133,6 +5133,13 @@ merge(Compressor.prototype, {
|
|||||||
return rhs.right;
|
return rhs.right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cross_scope(def, sym) {
|
||||||
|
do {
|
||||||
|
if (def === sym) return false;
|
||||||
|
if (sym instanceof AST_Scope) return true;
|
||||||
|
} while (sym = sym.parent_scope);
|
||||||
|
}
|
||||||
|
|
||||||
function scan_ref_scoped(node, descend, init) {
|
function scan_ref_scoped(node, descend, init) {
|
||||||
if (node instanceof AST_Assign && node.left instanceof AST_SymbolRef) {
|
if (node instanceof AST_Assign && node.left instanceof AST_SymbolRef) {
|
||||||
var def = node.left.definition();
|
var def = node.left.definition();
|
||||||
@@ -5186,7 +5193,7 @@ merge(Compressor.prototype, {
|
|||||||
in_use_ids[node_def.id] = true;
|
in_use_ids[node_def.id] = true;
|
||||||
in_use.push(node_def);
|
in_use.push(node_def);
|
||||||
}
|
}
|
||||||
if (node.scope !== node_def.scope) {
|
if (cross_scope(node_def.scope, node.scope)) {
|
||||||
var redef = node_def.redefined();
|
var redef = node_def.redefined();
|
||||||
if (redef && !(redef.id in in_use_ids)) {
|
if (redef && !(redef.id in in_use_ids)) {
|
||||||
in_use_ids[redef.id] = true;
|
in_use_ids[redef.id] = true;
|
||||||
|
|||||||
@@ -3055,3 +3055,33 @@ single_use_catch_redefined: {
|
|||||||
}
|
}
|
||||||
expect_stdout: true
|
expect_stdout: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4184: {
|
||||||
|
options = {
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
(function() {
|
||||||
|
var a = function() {}, b = [ a, 1 && b, a = {} ];
|
||||||
|
try {
|
||||||
|
throw 42;
|
||||||
|
} catch (a) {
|
||||||
|
{
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
(function() {
|
||||||
|
var b = [ function() {}, 1 && b, {} ];
|
||||||
|
try {
|
||||||
|
throw 42;
|
||||||
|
} catch (a) {
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: "42"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user