fix corner case with [].splice()
This commit is contained in:
parent
1d24488655
commit
f605e9efcf
|
|
@ -823,8 +823,7 @@ merge(Compressor.prototype, {
|
|||
if (node === expr) {
|
||||
found = true;
|
||||
if (node instanceof AST_VarDef) {
|
||||
var orig = node.name.definition().orig;
|
||||
orig.splice(orig.indexOf(node.name), 1);
|
||||
remove(node.name.definition().orig, node.name);
|
||||
}
|
||||
return in_list ? MAP.skip : null;
|
||||
}
|
||||
|
|
@ -2062,8 +2061,8 @@ merge(Compressor.prototype, {
|
|||
var var_defs = var_defs_by_id.get(sym.id);
|
||||
if (var_defs.length > 1 && !def.value) {
|
||||
compressor.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]", template(def.name));
|
||||
var_defs.splice(var_defs.indexOf(def), 1);
|
||||
sym.orig.splice(sym.orig.indexOf(def.name), 1);
|
||||
remove(var_defs, def);
|
||||
remove(sym.orig, def.name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -2096,7 +2095,7 @@ merge(Compressor.prototype, {
|
|||
} else {
|
||||
compressor[def.name.unreferenced() ? "warn" : "info"]("Dropping unused variable {name} [{file}:{line},{col}]", template(def.name));
|
||||
}
|
||||
sym.orig.splice(sym.orig.indexOf(def.name), 1);
|
||||
remove(sym.orig, def.name);
|
||||
}
|
||||
});
|
||||
if (head.length == 0 && tail.length == 1 && tail[0].name instanceof AST_SymbolVar) {
|
||||
|
|
@ -2104,9 +2103,8 @@ merge(Compressor.prototype, {
|
|||
if (var_defs.length > 1) {
|
||||
var def = tail.pop();
|
||||
compressor.warn("Converting duplicated definition of variable {name} to assignment [{file}:{line},{col}]", template(def.name));
|
||||
var_defs.splice(var_defs.indexOf(def), 1);
|
||||
var orig = def.name.definition().orig;
|
||||
orig.splice(orig.indexOf(def.name), 1);
|
||||
remove(var_defs, def);
|
||||
remove(def.name.definition().orig, def.name);
|
||||
side_effects.unshift(make_node(AST_Assign, def, {
|
||||
operator: "=",
|
||||
left: make_node(AST_SymbolRef, def.name, def.name),
|
||||
|
|
|
|||
|
|
@ -1114,3 +1114,36 @@ issue_1838: {
|
|||
"}",
|
||||
]
|
||||
}
|
||||
|
||||
var_catch_toplevel: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
negate_iife: true,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
function f() {
|
||||
a--;
|
||||
try {
|
||||
a++;
|
||||
} catch(a) {
|
||||
if (a) var a;
|
||||
var a = 10;
|
||||
}
|
||||
}
|
||||
f();
|
||||
}
|
||||
expect: {
|
||||
!function() {
|
||||
a--;
|
||||
try {
|
||||
a++;
|
||||
} catch(a) {
|
||||
var a;
|
||||
}
|
||||
}();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user