From: Alex Lam S.L Date: Fri, 24 Mar 2017 11:31:17 +0000 (+0800) Subject: fix corner case in `AST_For.init` (#1652) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=ac51d4c5a079dccbc9a6cf69d06f757432c69694;p=UglifyJS.git fix corner case in `AST_For.init` (#1652) Enforce `null` as value for empty initialisation blocks. fixes #1648 --- diff --git a/lib/compress.js b/lib/compress.js index cbcb7b86..3804a932 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2327,6 +2327,7 @@ merge(Compressor.prototype, { }; OPT(AST_For, function(self, compressor){ + if (is_empty(self.init)) self.init = null; if (!compressor.option("loops")) return self; if (self.condition) { var cond = self.condition.evaluate(compressor); diff --git a/lib/output.js b/lib/output.js index 767abd4d..c0f10523 100644 --- a/lib/output.js +++ b/lib/output.js @@ -799,7 +799,7 @@ function OutputStream(options) { output.print("for"); output.space(); output.with_parens(function(){ - if (self.init && !(self.init instanceof AST_EmptyStatement)) { + if (self.init) { if (self.init instanceof AST_Definitions) { self.init.print(output); } else { diff --git a/test/compress/loops.js b/test/compress/loops.js index b55c6162..c8d77840 100644 --- a/test/compress/loops.js +++ b/test/compress/loops.js @@ -440,3 +440,21 @@ issue_186_beautify_bracketize_ie8: { '}', ] } + +issue_1648: { + options = { + join_vars: true, + loops: true, + passes: 2, + sequences: true, + unused: true, + } + input: { + function f() { + x(); + var b = 1; + while (1); + } + } + expect_exact: "function f(){for(x();1;);}" +}