diff options
Diffstat (limited to 'lib/compress.js')
-rw-r--r-- | lib/compress.js | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js index 52c30964..735b4d2d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1708,6 +1708,11 @@ merge(Compressor.prototype, { 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); }); @@ -3184,8 +3189,14 @@ merge(Compressor.prototype, { } }); 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); |