From dd0e753e903d71218efccdeb63f109b23aced30b Mon Sep 17 00:00:00 2001 From: alexlamsl Date: Sun, 2 Apr 2017 13:57:28 +0800 Subject: [PATCH] fix `undefined` confusion with local variable --- lib/compress.js | 4 ++-- test/compress/sequences.js | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index 176c7bf1..752e1f08 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1054,7 +1054,7 @@ merge(Compressor.prototype, { stat.value = cons_seq(stat.value); } else if (stat instanceof AST_Exit) { - stat.value = cons_seq(make_node(AST_Undefined, stat)); + stat.value = cons_seq(make_node(AST_Undefined, stat).transform(compressor)); } else if (stat instanceof AST_Switch) { stat.expression = cons_seq(stat.expression); @@ -2912,7 +2912,7 @@ merge(Compressor.prototype, { if (name instanceof AST_SymbolRef && name.name == "console" && name.undeclared()) { - return make_node(AST_Undefined, self).transform(compressor); + return make_node(AST_Undefined, self).optimize(compressor); } } } diff --git a/test/compress/sequences.js b/test/compress/sequences.js index f1fa0e87..8e388c69 100644 --- a/test/compress/sequences.js +++ b/test/compress/sequences.js @@ -440,3 +440,29 @@ func_def_5: { } expect_stdout: "true" } + +issue_1758: { + options = { + sequences: true, + side_effects: true, + } + input: { + console.log(function(c) { + var undefined = 42; + return function() { + c--; + c--, c.toString(); + return; + }(); + }()); + } + expect:{ + console.log(function(c) { + var undefined = 42; + return function() { + return c--, c--, c.toString(), void 0; + }(); + }()); + } + expect_stdout: "undefined" +}