diff options
-rw-r--r-- | lib/compress.js | 10 | ||||
-rw-r--r-- | test/compress/sequences.js | 30 |
2 files changed, 29 insertions, 11 deletions
diff --git a/lib/compress.js b/lib/compress.js index 72f8e636..b371aadb 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4080,12 +4080,10 @@ merge(Compressor.prototype, { def(AST_ObjectProperty, function(compressor, first_in_statement) { return this.value.drop_side_effect_free(compressor, first_in_statement); }); - def(AST_Sequence, function(compressor) { - var last = this.tail_node(); - var expr = last.drop_side_effect_free(compressor); - if (expr === last) return this; - var expressions = this.expressions.slice(0, -1); - if (expr) expressions.push(expr); + def(AST_Sequence, function(compressor, first_in_statement) { + var expressions = trim(this.expressions, compressor, first_in_statement); + if (expressions === this.expressions) return this; + if (!expressions) return null; return make_sequence(this, expressions); }); def(AST_Sub, function(compressor, first_in_statement) { diff --git a/test/compress/sequences.js b/test/compress/sequences.js index 79b176e3..0670ab53 100644 --- a/test/compress/sequences.js +++ b/test/compress/sequences.js @@ -924,14 +924,14 @@ call: { b.c = function() { console.log(this === b ? "bar" : "baz"); }, - a, b(), + b(), (a, b.c)(), - a, function() { + function() { console.log(this === a); }(), - a, new b(), - a, new b.c(), - a, new function() { + new b(), + new b.c(), + new function() { console.log(this === a); }(); } @@ -944,3 +944,23 @@ call: { "false", ] } + +missing_link: { + options = { + conditionals: true, + evaluate: true, + sequences: true, + } + input: { + var a = 100; + a; + a++ + (0 ? 2 : 1); + console.log(a); + } + expect: { + var a = 100; + a, + a++, + console.log(a); + } +} |