update SymbolDef.orig after drop_unused()

This commit is contained in:
alexlamsl 2017-05-04 00:27:20 +08:00
parent 475f551f2f
commit 77974bc534
2 changed files with 41 additions and 0 deletions

View File

@ -2075,6 +2075,7 @@ merge(Compressor.prototype, {
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);
return;
}
}
@ -2107,6 +2108,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);
}
});
if (head.length == 0 && tail.length == 1 && tail[0].name instanceof AST_SymbolVar) {
@ -2115,6 +2117,8 @@ merge(Compressor.prototype, {
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);
side_effects.unshift(make_node(AST_Assign, def, {
operator: "=",
left: make_node(AST_SymbolRef, def.name, def.name),

View File

@ -2077,3 +2077,40 @@ toplevel_single_reference: {
b(a = b);
}
}
unused_orig: {
options = {
collapse_vars: true,
passes: 2,
reduce_vars: true,
unused: true,
}
input: {
var a = 1;
console.log(function(b) {
var a;
var c = b;
for (var d in c) {
var a = c[0];
return --b + a;
}
try {
} catch (e) {
--b + a;
}
a && a.NaN;
}([2]), a);
}
expect: {
var a = 1;
console.log(function(b) {
var c = b;
for (var d in c) {
var a = c[0];
return --b + a;
}
a && a.NaN;
}([2]), a);
}
expect_stdout: "3 1"
}