fix corner cases in rests & unused (#5063)
This commit is contained in:
@@ -5507,7 +5507,7 @@ merge(Compressor.prototype, {
|
||||
if (!(fn.rest instanceof AST_DestructuredArray)) return;
|
||||
if (!compressor.drop_fargs(fn, compressor.parent())) return;
|
||||
fn.argnames = fn.argnames.concat(fn.rest.elements);
|
||||
fn.rest = null;
|
||||
fn.rest = fn.rest.rest;
|
||||
}
|
||||
|
||||
OPT(AST_Lambda, function(self, compressor) {
|
||||
@@ -6428,12 +6428,16 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
if (!(node instanceof AST_Accessor)) {
|
||||
if (node.rest) {
|
||||
node.rest = node.rest.transform(trimmer);
|
||||
if (!(node.uses_arguments && !tt.has_directive("use strict"))
|
||||
&& (node.rest instanceof AST_DestructuredArray && node.rest.elements.length == 0
|
||||
|| node.rest instanceof AST_DestructuredObject && node.rest.properties.length == 0)) {
|
||||
node.rest = null;
|
||||
var rest = node.rest.transform(trimmer);
|
||||
if (rest instanceof AST_Destructured && !rest.rest
|
||||
&& (!node.uses_arguments || tt.has_directive("use strict"))) {
|
||||
if (rest instanceof AST_DestructuredArray) {
|
||||
if (rest.elements.length == 0) rest = null;
|
||||
} else if (rest.properties.length == 0) {
|
||||
rest = null;
|
||||
}
|
||||
}
|
||||
node.rest = rest;
|
||||
}
|
||||
var argnames = node.argnames;
|
||||
var trim = compressor.drop_fargs(node, parent) && !node.rest;
|
||||
@@ -12125,7 +12129,7 @@ merge(Compressor.prototype, {
|
||||
OPT(AST_DestructuredArray, function(self, compressor) {
|
||||
if (compressor.option("rests") && self.rest instanceof AST_DestructuredArray) {
|
||||
self.elements = self.elements.concat(self.rest.elements);
|
||||
self.rest = null;
|
||||
self.rest = self.rest.rest;
|
||||
}
|
||||
return self;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user