update SymbolDef.orig after drop_unused()
This commit is contained in:
parent
475f551f2f
commit
77974bc534
|
|
@ -2075,6 +2075,7 @@ merge(Compressor.prototype, {
|
||||||
if (var_defs.length > 1 && !def.value) {
|
if (var_defs.length > 1 && !def.value) {
|
||||||
compressor.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]", template(def.name));
|
compressor.warn("Dropping duplicated definition of variable {name} [{file}:{line},{col}]", template(def.name));
|
||||||
var_defs.splice(var_defs.indexOf(def), 1);
|
var_defs.splice(var_defs.indexOf(def), 1);
|
||||||
|
sym.orig.splice(sym.orig.indexOf(def.name), 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2107,6 +2108,7 @@ merge(Compressor.prototype, {
|
||||||
} else {
|
} else {
|
||||||
compressor[def.name.unreferenced() ? "warn" : "info"]("Dropping unused variable {name} [{file}:{line},{col}]", template(def.name));
|
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) {
|
if (head.length == 0 && tail.length == 1 && tail[0].name instanceof AST_SymbolVar) {
|
||||||
|
|
@ -2115,6 +2117,8 @@ merge(Compressor.prototype, {
|
||||||
var def = tail.pop();
|
var def = tail.pop();
|
||||||
compressor.warn("Converting duplicated definition of variable {name} to assignment [{file}:{line},{col}]", template(def.name));
|
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_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, {
|
side_effects.unshift(make_node(AST_Assign, def, {
|
||||||
operator: "=",
|
operator: "=",
|
||||||
left: make_node(AST_SymbolRef, def.name, def.name),
|
left: make_node(AST_SymbolRef, def.name, def.name),
|
||||||
|
|
|
||||||
|
|
@ -2077,3 +2077,40 @@ toplevel_single_reference: {
|
||||||
b(a = b);
|
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"
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user