aboutsummaryrefslogtreecommitdiff
path: root/lib/compress.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compress.js')
-rw-r--r--lib/compress.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 59caa15c..f44277cd 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -1865,6 +1865,14 @@ merge(Compressor.prototype, {
return self.evaluate(compressor)[0];
});
+ function has_side_effects_or_prop_access(node, compressor) {
+ var save_pure_getters = compressor.option("pure_getters");
+ compressor.options.pure_getters = false;
+ var ret = node.has_side_effects(compressor);
+ compressor.options.pure_getters = save_pure_getters;
+ return ret;
+ }
+
AST_Binary.DEFMETHOD("lift_sequences", function(compressor){
if (compressor.option("sequences")) {
if (this.left instanceof AST_Seq) {
@@ -1875,6 +1883,16 @@ merge(Compressor.prototype, {
seq = AST_Seq.from_array(x).transform(compressor);
return seq;
}
+ if (this.right instanceof AST_Seq
+ && this instanceof AST_Assign
+ && !has_side_effects_or_prop_access(this.left, compressor)) {
+ var seq = this.right;
+ var x = seq.to_array();
+ this.right = x.pop();
+ x.push(this);
+ seq = AST_Seq.from_array(x).transform(compressor);
+ return seq;
+ }
}
return this;
});