diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2020-12-11 16:07:28 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-12 00:07:28 +0800 |
commit | 515e93d88a9b5fa67b155ea081fc6716249d8ce8 (patch) | |
tree | 296467faacc9c22cc0fba86fb44565dc7719f9bd /lib | |
parent | 57105b299ec582bc731b58002703faa297f10063 (diff) | |
download | tracifyjs-515e93d88a9b5fa67b155ea081fc6716249d8ce8.tar.gz tracifyjs-515e93d88a9b5fa67b155ea081fc6716249d8ce8.zip |
fix corner case in `collapse_vars` (#4360)
fixes #4359
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/compress.js b/lib/compress.js index d4b911ee..cb3351ac 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1614,6 +1614,14 @@ merge(Compressor.prototype, { var scan_lhs = lhs && !side_effects && !is_lhs_read_only(lhs, compressor); var scan_rhs = foldable(candidate); if (!scan_lhs && !scan_rhs) continue; + var funarg = candidate.name instanceof AST_SymbolFunarg; + var may_throw = return_false; + if (candidate.may_throw(compressor)) { + if (funarg && scope instanceof AST_AsyncFunction) continue; + may_throw = in_try ? function(node) { + return node.has_side_effects(compressor); + } : side_effects_external; + } var read_toplevel = false; var modify_toplevel = false; // Locate symbols which may execute code outside of scanning range @@ -1622,10 +1630,6 @@ merge(Compressor.prototype, { var rvalue = get_rvalue(candidate); if (!side_effects) side_effects = value_has_side_effects(); var replace_all = replace_all_symbols(candidate); - var may_throw = candidate.may_throw(compressor) ? in_try ? function(node) { - return node.has_side_effects(compressor); - } : side_effects_external : return_false; - var funarg = candidate.name instanceof AST_SymbolFunarg; var hit = funarg; var abort = false; var replaced = 0; |