fix collapse_vars on nested exception (#2955)

fixes #2954
This commit is contained in:
Alex Lam S.L
2018-02-25 15:39:00 +08:00
committed by GitHub
parent 52de64cf16
commit ea2359381b
2 changed files with 40 additions and 4 deletions

View File

@@ -914,7 +914,7 @@ merge(Compressor.prototype, {
function tighten_body(statements, compressor) {
var scope = compressor.find_parent(AST_Scope);
var in_loop = is_in_loop();
var in_loop = is_in_node(AST_IterationStatement);
var CHANGED, max_iter = 10;
do {
CHANGED = false;
@@ -937,9 +937,10 @@ merge(Compressor.prototype, {
}
} while (CHANGED && max_iter-- > 0);
function is_in_loop() {
function is_in_node(type) {
if (compressor.self() instanceof type) return true;
for (var node, level = 0; node = compressor.parent(level); level++) {
if (node instanceof AST_IterationStatement) return true;
if (node instanceof type) return true;
if (node instanceof AST_Scope) break;
}
return false;
@@ -957,7 +958,7 @@ merge(Compressor.prototype, {
if (scope.uses_eval || scope.uses_with) return statements;
var args;
var candidates = [];
var in_try = compressor.self() instanceof AST_Try;
var in_try = is_in_node(AST_Try);
var stat_index = statements.length;
var scanner = new TreeTransformer(function(node, descend) {
if (abort) return node;