statements.splice(i, 1);
continue;
}
- if (stat.value instanceof AST_UnaryPrefix && stat.value.operator == "void") {
+ var tail = stat.value.tail_node();
+ if (tail instanceof AST_UnaryPrefix && tail.operator == "void") {
CHANGED = true;
+ var body;
+ if (tail === stat.value) {
+ body = tail.expression;
+ } else {
+ body = stat.value.clone();
+ body.expressions[body.length - 1] = tail.expression;
+ }
statements[i] = make_node(AST_SimpleStatement, stat, {
- body: stat.value.expression
+ body: body,
});
continue;
}
return this;
});
def(AST_AsyncFunction, return_null);
+ def(AST_Await, function(compressor) {
+ var exp = this.expression.drop_side_effect_free(compressor);
+ if (exp === this.expression) return this;
+ var node = this.clone();
+ node.expression = exp || make_node(AST_Number, this, { value: 0 });
+ return node;
+ });
def(AST_Binary, function(compressor, first_in_statement) {
if (this.operator == "in" && !is_object(this.right)) {
var left = this.left.drop_side_effect_free(compressor, first_in_statement);