fix corner case in unsafe (#4779)
This commit is contained in:
@@ -8533,20 +8533,25 @@ merge(Compressor.prototype, {
|
||||
var separator = self.args[0];
|
||||
// [].join() ---> ""
|
||||
// [].join(x) ---> (x, "")
|
||||
if (exp.expression.elements.length == 0) return separator ? make_sequence(self, [
|
||||
separator,
|
||||
make_node(AST_String, self, { value: "" }),
|
||||
]).optimize(compressor) : make_node(AST_String, self, { value: "" });
|
||||
if (exp.expression.elements.length == 0 && !(separator instanceof AST_Spread)) {
|
||||
return separator ? make_sequence(self, [
|
||||
separator,
|
||||
make_node(AST_String, self, { value: "" }),
|
||||
]).optimize(compressor) : make_node(AST_String, self, { value: "" });
|
||||
}
|
||||
if (separator) {
|
||||
separator = separator.evaluate(compressor);
|
||||
if (separator instanceof AST_Node) break EXIT; // not a constant
|
||||
}
|
||||
var elements = [];
|
||||
var consts = [];
|
||||
exp.expression.elements.forEach(function(el) {
|
||||
for (var i = 0; i < exp.expression.elements.length; i++) {
|
||||
var el = exp.expression.elements[i];
|
||||
var value = el.evaluate(compressor);
|
||||
if (value !== el) {
|
||||
consts.push(value);
|
||||
} else if (el instanceof AST_Spread) {
|
||||
break EXIT;
|
||||
} else {
|
||||
if (consts.length > 0) {
|
||||
elements.push(make_node(AST_String, self, {
|
||||
@@ -8556,7 +8561,7 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
elements.push(el);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (consts.length > 0) elements.push(make_node(AST_String, self, {
|
||||
value: consts.join(separator),
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user