From 3f09efeeea1adbe1d238876e1e44bd92ad987574 Mon Sep 17 00:00:00 2001 From: alexlamsl Date: Fri, 7 Apr 2017 05:33:42 +0800 Subject: [PATCH] fix `reduce_vars` on catch variable Improved catch handling in `figure_out_scope()` means special case treatment of IE8 is no longer valid in `reset_opt_flags()`. --- lib/compress.js | 3 +-- test/compress/reduce_vars.js | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index de3b4db2..888eb9ca 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -251,7 +251,6 @@ merge(Compressor.prototype, { AST_Node.DEFMETHOD("reset_opt_flags", function(compressor, rescan){ var reduce_vars = rescan && compressor.option("reduce_vars"); var toplevel = compressor.option("toplevel"); - var ie8 = !compressor.option("screw_ie8"); var safe_ids = []; push(); var suppressor = new TreeWalker(function(node) { @@ -277,7 +276,7 @@ merge(Compressor.prototype, { d.fixed = false; } } - if (ie8 && node instanceof AST_SymbolCatch) { + if (node instanceof AST_SymbolCatch) { node.definition().fixed = false; } if (node instanceof AST_VarDef) { diff --git a/test/compress/reduce_vars.js b/test/compress/reduce_vars.js index fdfec99e..46127ae2 100644 --- a/test/compress/reduce_vars.js +++ b/test/compress/reduce_vars.js @@ -1938,3 +1938,28 @@ pure_getters: { } expect_stdout: "undefined" } + +catch_var: { + options = { + booleans: true, + evaluate: true, + reduce_vars: true, + } + input: { + try { + throw {}; + } catch (e) { + var e; + console.log(!!e); + } + } + expect: { + try { + throw {}; + } catch (e) { + var e; + console.log(!!e); + } + } + expect_stdout: "true" +}