diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2021-02-24 20:41:21 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-25 04:41:21 +0800 |
commit | a5e6946f74333fc201e76bcba49d0b160edb4448 (patch) | |
tree | 0e32d460bb74f8ef6f0bd4d4d22263cdad5b8938 | |
parent | b8672b55b25b3333188724a5c20588db96ccd0dc (diff) | |
download | tracifyjs-a5e6946f74333fc201e76bcba49d0b160edb4448.tar.gz tracifyjs-a5e6946f74333fc201e76bcba49d0b160edb4448.zip |
fix corner case in `loops` (#4684)
fixes #4683
-rw-r--r-- | lib/compress.js | 8 | ||||
-rw-r--r-- | test/compress/classes.js | 19 |
2 files changed, 23 insertions, 4 deletions
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" +} |