return self;
});
- function trim_block(node, in_list) {
+ function trim_block(node, parent, in_list) {
switch (node.body.length) {
case 0:
return in_list ? List.skip : make_node(AST_EmptyStatement, node);
case 1:
var stat = node.body[0];
- if (!(stat instanceof AST_Const || stat instanceof AST_Let)) return stat;
+ if (stat instanceof AST_Const || stat instanceof AST_Let) return node;
+ if (parent instanceof AST_IterationStatement && stat instanceof AST_LambdaDefinition) return node;
+ return stat;
}
return node;
}
OPT(AST_BlockStatement, function(self, compressor) {
self.body = tighten_body(self.body, compressor);
- return trim_block(self);
+ return trim_block(self, compressor.parent());
});
function drop_rest_farg(fn, compressor) {
}
}, function(node, in_list) {
if (node instanceof AST_BlockStatement) {
- return trim_block(node, in_list);
+ 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
break;
}
}
- self.body = trim_block(self.body);
+ self.body = trim_block(self.body, compressor.parent());
}
if (self.body instanceof AST_EmptyStatement) return make_node(AST_For, self, self).optimize(compressor);
if (self.body instanceof AST_SimpleStatement) return make_node(AST_For, self, {