enhance unused (#3617)

This commit is contained in:
Alex Lam S.L
2019-12-01 18:10:37 +08:00
committed by GitHub
parent 0593892d6e
commit e915832a36
7 changed files with 62 additions and 44 deletions

View File

@@ -5173,24 +5173,42 @@ merge(Compressor.prototype, {
&& !fn.uses_arguments
&& !fn.pinned()) {
var pos = 0, last = 0;
var side_effects = [];
for (var i = 0; i < self.args.length; i++) {
var trim = i >= fn.argnames.length;
if (trim || fn.argnames[i].__unused) {
var node = self.args[i].drop_side_effect_free(compressor);
if (node) {
self.args[pos++] = node;
if (exp === fn) {
fn.argnames.splice(i, 1);
self.args.splice(i, 1);
if (node) side_effects.push(node);
i--;
continue;
} else if (node) {
side_effects.push(node);
self.args[pos++] = make_sequence(self, side_effects);
side_effects = [];
} else if (!trim) {
self.args[pos++] = make_node(AST_Number, self.args[i], {
value: 0
});
if (side_effects.length) {
node = make_sequence(self, side_effects);
side_effects = [];
} else {
node = make_node(AST_Number, self.args[i], {
value: 0
});
}
self.args[pos++] = node;
continue;
}
} else {
self.args[pos++] = self.args[i];
side_effects.push(self.args[i]);
self.args[pos++] = make_sequence(self, side_effects);
side_effects = [];
}
last = pos;
}
self.args.length = last;
if (side_effects.length) self.args.push(make_sequence(self, side_effects));
}
if (compressor.option("unsafe")) {
if (is_undeclared_ref(exp)) switch (exp.name) {