aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/compress.js10
-rw-r--r--test/compress/sequences.js30
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);
+ }
+}