@@ -2701,8 +2701,8 @@ merge(Compressor.prototype, {
|
||||
|
||||
function patch_sequence(node) {
|
||||
if (node instanceof AST_Sequence) switch (node.expressions.length) {
|
||||
case 0: return null;
|
||||
case 1: return node.expressions[0];
|
||||
case 0: return null;
|
||||
case 1: return maintain_this_binding(compressor, this.parent(), node, node.expressions[0]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6386,14 +6386,13 @@ merge(Compressor.prototype, {
|
||||
scope = save_scope;
|
||||
}
|
||||
}, function(node, in_list) {
|
||||
if (node instanceof AST_BlockStatement) {
|
||||
return trim_block(node, tt.parent(), in_list);
|
||||
} else if (node instanceof AST_For) {
|
||||
// Certain combination of unused name + side effect leads to invalid AST:
|
||||
// https://github.com/mishoo/UglifyJS/issues/44
|
||||
// https://github.com/mishoo/UglifyJS/issues/1838
|
||||
// https://github.com/mishoo/UglifyJS/issues/3371
|
||||
// We fix it at this stage by moving the `var` outside the `for`.
|
||||
if (node instanceof AST_BlockStatement) return trim_block(node, tt.parent(), in_list);
|
||||
// Certain combination of unused name + side effect leads to invalid AST:
|
||||
// https://github.com/mishoo/UglifyJS/issues/44
|
||||
// https://github.com/mishoo/UglifyJS/issues/1838
|
||||
// https://github.com/mishoo/UglifyJS/issues/3371
|
||||
// We fix it at this stage by moving the `var` outside the `for`.
|
||||
if (node instanceof AST_For) {
|
||||
var block;
|
||||
if (node.init instanceof AST_BlockStatement) {
|
||||
block = node.init;
|
||||
@@ -6414,7 +6413,8 @@ merge(Compressor.prototype, {
|
||||
node.init = null;
|
||||
}
|
||||
return !block ? node : in_list ? List.splice(block.body) : block;
|
||||
} else if (node instanceof AST_ForIn) {
|
||||
}
|
||||
if (node instanceof AST_ForIn) {
|
||||
if (!drop_vars || !compressor.option("loops")) return;
|
||||
if (!is_empty(node.body)) return;
|
||||
var sym = get_init_symbol(node);
|
||||
@@ -6435,8 +6435,10 @@ merge(Compressor.prototype, {
|
||||
body.push(node.init);
|
||||
}
|
||||
return insert_statements(body, node, in_list);
|
||||
} else if (node instanceof AST_Sequence) {
|
||||
if (node.expressions.length == 1) return node.expressions[0];
|
||||
}
|
||||
if (node instanceof AST_Sequence) {
|
||||
if (node.expressions.length > 1) return;
|
||||
return maintain_this_binding(compressor, tt.parent(), node, node.expressions[0]);
|
||||
}
|
||||
});
|
||||
tt.push(compressor.parent());
|
||||
|
||||
Reference in New Issue
Block a user