aboutsummaryrefslogtreecommitdiff
path: root/lib/compress.js
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-03-05 13:13:44 +0800
committerGitHub <noreply@github.com>2017-03-05 13:13:44 +0800
commitb70591be1a603d3c1728e6563691c3a192023d3f (patch)
treec7b72062b2418b8423b04047cac152d40def7105 /lib/compress.js
parentb33e7f88e60f886ee3403c82ac2e3fb40caa698f (diff)
downloadtracifyjs-b70591be1a603d3c1728e6563691c3a192023d3f.tar.gz
tracifyjs-b70591be1a603d3c1728e6563691c3a192023d3f.zip
handle variable declaration within catch blocks (#1546)
accounts for IE8- scoping
Diffstat (limited to 'lib/compress.js')
-rw-r--r--lib/compress.js12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js
index f2269a2f..1a54c75e 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -223,6 +223,7 @@ merge(Compressor.prototype, {
AST_Node.DEFMETHOD("reset_opt_flags", function(compressor, rescan){
var reduce_vars = rescan && compressor.option("reduce_vars");
+ var ie8 = !compressor.option("screw_ie8");
var safe_ids = [];
push();
var suppressor = new TreeWalker(function(node) {
@@ -232,7 +233,7 @@ merge(Compressor.prototype, {
d.fixed = false;
}
});
- var tw = new TreeWalker(function(node){
+ var tw = new TreeWalker(function(node, descend){
if (!(node instanceof AST_Directive || node instanceof AST_Constant)) {
node._squeezed = false;
node._optimized = false;
@@ -247,6 +248,9 @@ merge(Compressor.prototype, {
d.fixed = false;
}
}
+ if (ie8 && node instanceof AST_SymbolCatch) {
+ node.definition().fixed = false;
+ }
if (node instanceof AST_VarDef) {
var d = node.name.definition();
if (d.fixed === undefined) {
@@ -301,6 +305,12 @@ merge(Compressor.prototype, {
pop();
return true;
}
+ if (node instanceof AST_Catch) {
+ push();
+ descend();
+ pop();
+ return true;
+ }
}
});
this.walk(tw);