fix dead_code on return/throw within try (#2588)
This commit is contained in:
@@ -4674,6 +4674,11 @@ merge(Compressor.prototype, {
|
||||
node = parent;
|
||||
parent = compressor.parent(level++);
|
||||
if (parent instanceof AST_Exit) {
|
||||
var try_node = find_try(level);
|
||||
if (try_node) {
|
||||
if (try_node.bfinally) break;
|
||||
if (parent instanceof AST_Throw && try_node.bcatch) break;
|
||||
}
|
||||
if (self.operator == "=") return self.right;
|
||||
return make_node(AST_Binary, self, {
|
||||
operator: self.operator.slice(0, -1),
|
||||
@@ -4704,6 +4709,14 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
}
|
||||
return self;
|
||||
|
||||
function find_try(level) {
|
||||
var scope = self.left.definition().scope;
|
||||
var parent;
|
||||
while ((parent = compressor.parent(level++)) !== scope) {
|
||||
if (parent instanceof AST_Try) return parent;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
OPT(AST_Conditional, function(self, compressor){
|
||||
|
||||
Reference in New Issue
Block a user