diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2020-08-21 01:05:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-21 08:05:10 +0800 |
commit | aa83ecdb3b1ab4c50cb8347b559e13c3dcf8b343 (patch) | |
tree | eca262c51319b60e7dfbd640ccf81cbc4d5a7744 /lib/compress.js | |
parent | a153176469d49b851b884b96261f01ea8026ba82 (diff) | |
download | tracifyjs-aa83ecdb3b1ab4c50cb8347b559e13c3dcf8b343.tar.gz tracifyjs-aa83ecdb3b1ab4c50cb8347b559e13c3dcf8b343.zip |
fix corner case in `switches` (#4060)
fixes #4059
Diffstat (limited to 'lib/compress.js')
-rw-r--r-- | lib/compress.js | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js index 8bc8b37e..f15776c8 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -5918,7 +5918,7 @@ merge(Compressor.prototype, { self.body = body; if (compressor.option("conditionals")) switch (body.length) { case 1: - if (!no_break(self)) break; + if (!no_break(body[0])) break; var exp = body[0].expression; var statements = body[0].body.slice(); if (body[0] !== default_branch && body[0] !== exact_match) return make_node(AST_If, self, { @@ -5942,7 +5942,7 @@ merge(Compressor.prototype, { body: statements, }).optimize(compressor); case 2: - if (!member(default_branch, body)) break; + if (!member(default_branch, body) || !no_break(body[1])) break; var statements = body[0].body.slice(); var exclusive = statements.length && is_break(statements[statements.length - 1], compressor); if (exclusive) statements.pop(); @@ -5982,6 +5982,7 @@ merge(Compressor.prototype, { || node instanceof AST_SimpleStatement) return true; if (is_break(node, tw)) found = true; }); + tw.push(self); node.walk(tw); return !found; } |