From: Alex Lam S.L Date: Wed, 24 Feb 2021 20:41:21 +0000 (+0000) Subject: fix corner case in `loops` (#4684) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=a5e6946f74333fc201e76bcba49d0b160edb4448;p=UglifyJS.git fix corner case in `loops` (#4684) fixes #4683 --- diff --git a/lib/compress.js b/lib/compress.js index 263bad01..5c38e407 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1512,7 +1512,7 @@ merge(Compressor.prototype, { return !is_lexical_definition(stat); }) ? thing.body : [ thing ]; if (thing instanceof AST_EmptyStatement) return []; - if (thing instanceof AST_Statement) return [ thing ]; + if (is_statement(thing)) return [ thing ]; throw new Error("Can't convert thing to statement array"); } @@ -3382,7 +3382,7 @@ merge(Compressor.prototype, { return in_list ? List.skip : make_node(AST_EmptyStatement, node); } if (node instanceof AST_Scope) return node; - if (!(node instanceof AST_Statement)) return node; + if (!is_statement(node)) return node; })); } } @@ -7504,7 +7504,7 @@ merge(Compressor.prototype, { || first instanceof AST_Continue && external_target(first) || first instanceof AST_Exit)) { var body = []; - if (self.init instanceof AST_Statement) { + if (is_statement(self.init)) { body.push(self.init); } else if (self.init) { body.push(make_node(AST_SimpleStatement, self.init, { @@ -7606,7 +7606,7 @@ merge(Compressor.prototype, { if (!cond) { if (compressor.option("dead_code")) { var body = []; - if (self.init instanceof AST_Statement) { + if (is_statement(self.init)) { body.push(self.init); } else if (self.init) { body.push(make_node(AST_SimpleStatement, self.init, { diff --git a/test/compress/classes.js b/test/compress/classes.js index 78536094..95b4037d 100644 --- a/test/compress/classes.js +++ b/test/compress/classes.js @@ -596,3 +596,22 @@ issue_4681: { expect_stdout: "function" node_version: ">=12" } + +issue_4683: { + options = { + dead_code: true, + evaluate: true, + loops: true, + } + input: { + "use strict"; + for (class extends null {}; void console.log("PASS"); ); + } + expect: { + "use strict"; + (class extends null {}); + void console.log("PASS"); + } + expect_stdout: "PASS" + node_version: ">=4" +}