return this.consequent._dot_throw(compressor)
|| this.alternative._dot_throw(compressor);
})
+ def(AST_Dot, function(compressor) {
+ if (!is_strict(compressor)) return false;
+ if (this.expression instanceof AST_Function && this.property == "prototype") return false;
+ return true;
+ });
def(AST_Sequence, function(compressor) {
return this.tail_node()._dot_throw(compressor);
});
}
});
def(AST_Assign, function(compressor){
- this.write_only = !this.left.has_side_effects(compressor);
- return this;
+ var left = this.left;
+ if (left.has_side_effects(compressor)) return this;
+ this.write_only = true;
+ while (left instanceof AST_PropAccess) {
+ left = left.expression;
+ }
+ if (left instanceof AST_Symbol) return this;
+ return this.right.drop_side_effect_free(compressor);
});
def(AST_Conditional, function(compressor){
var consequent = this.consequent.drop_side_effect_free(compressor);
"undefined undefined",
]
}
+
+const_prop_assign_strict: {
+ options = {
+ pure_getters: "strict",
+ side_effects: true,
+ }
+ input: {
+ function Simulator() {
+ /abc/.index = 1;
+ this._aircraft = [];
+ }
+ (function() {}).prototype.destroy = x();
+ }
+ expect: {
+ function Simulator() {
+ this._aircraft = [];
+ }
+ x();
+ }
+}
+
+const_prop_assign_pure: {
+ options = {
+ pure_getters: true,
+ side_effects: true,
+ }
+ input: {
+ function Simulator() {
+ /abc/.index = 1;
+ this._aircraft = [];
+ }
+ (function() {}).prototype.destroy = x();
+ }
+ expect: {
+ function Simulator() {
+ this._aircraft = [];
+ }
+ x();
+ }
+}