diff --git a/lib/compress.js b/lib/compress.js index 338b05f094..7e5f7e07e0 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -11592,7 +11592,7 @@ Compressor.prototype.compress = function(node) { function extract_lhs(node, compressor) { if (node instanceof AST_Assign) return is_lhs_read_only(node.left, compressor) ? node : node.left; - if (node instanceof AST_Sequence) return extract_lhs(node.tail_node()); + if (node instanceof AST_Sequence) return extract_lhs(node.tail_node(), compressor); if (node instanceof AST_UnaryPrefix && UNARY_POSTFIX[node.operator]) { return is_lhs_read_only(node.expression, compressor) ? node : node.expression; } diff --git a/test/compress/booleans.js b/test/compress/booleans.js index d8e6200458..ae69fd0f15 100644 --- a/test/compress/booleans.js +++ b/test/compress/booleans.js @@ -831,19 +831,36 @@ issue_5469: { expect_stdout: "undefined" } -issue_5694: { +issue_5694_1: { options = { booleans: true, conditionals: true, } input: { - var undefined; + var Infinity; // Node.js v0.12~6 (vm): 42 - console.log((undefined = 42) && undefined); + console.log((Infinity = 42) && Infinity); + } + expect: { + var Infinity; + console.log((Infinity = 42) && Infinity); + } + expect_stdout: true +} + +issue_5694_2: { + options = { + booleans: true, + conditionals: true, + } + input: { + var undefined; + // Node.js v0.12~6 (vm): NaN + console.log(("foo", ++undefined) || undefined); } expect: { var undefined; - console.log((undefined = 42) && undefined); + console.log(("foo", ++undefined) || undefined); } expect_stdout: true }