@@ -7734,16 +7734,37 @@ Compressor.prototype.compress = function(node) {
|
||||
return prop.key instanceof AST_Node && prop.key.has_side_effects(compressor);
|
||||
}
|
||||
|
||||
function clear_write_only(node) {
|
||||
if (node instanceof AST_Assign) {
|
||||
node.write_only = false;
|
||||
clear_write_only(node.right);
|
||||
} else if (node instanceof AST_Binary) {
|
||||
if (!lazy_op[node.operator]) return;
|
||||
clear_write_only(node.left);
|
||||
clear_write_only(node.right);
|
||||
} else if (node instanceof AST_Conditional) {
|
||||
clear_write_only(node.consequent);
|
||||
clear_write_only(node.alternative);
|
||||
} else if (node instanceof AST_Sequence) {
|
||||
clear_write_only(node.tail_node());
|
||||
} else if (node instanceof AST_Unary) {
|
||||
node.write_only = false;
|
||||
}
|
||||
}
|
||||
|
||||
function retain_lhs(node) {
|
||||
if (node instanceof AST_DefaultValue) return retain_lhs(node.name);
|
||||
if (node instanceof AST_Destructured) {
|
||||
if (value === null) {
|
||||
value = make_node(AST_Number, node, { value: 0 });
|
||||
} else if (value && (value.tail_node().write_only === true
|
||||
|| value.may_throw_on_access(compressor, true))) {
|
||||
value = make_node(AST_Array, node, {
|
||||
elements: value instanceof AST_Sequence ? value.expressions : [ value ],
|
||||
});
|
||||
} else if (value) {
|
||||
if (value.may_throw_on_access(compressor, true)) {
|
||||
value = make_node(AST_Array, node, {
|
||||
elements: value instanceof AST_Sequence ? value.expressions : [ value ],
|
||||
});
|
||||
} else {
|
||||
clear_write_only(value);
|
||||
}
|
||||
}
|
||||
return make_node(AST_DestructuredObject, node, { properties: [] });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user