From 143f9054da8790eee16758defdfdc927f48cf9b4 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Wed, 20 Mar 2019 14:54:26 +0800 Subject: [PATCH] fix corner case in `sequences` (#3350) --- lib/compress.js | 10 ++++------ test/compress/sequences.js | 30 +++++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index 72f8e63600..b371aadbbe 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 79b176e3a5..0670ab530d 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); + } +}