return self;
function can_flatten_args(fn) {
- var scope = compressor.find_parent(AST_Scope);
+ var scope, level = 0;
+ var catches = Object.create(null);
+ do {
+ scope = compressor.parent(level++);
+ if (scope instanceof AST_Catch) {
+ catches[scope.argname.name] = true;
+ }
+ } while (!(scope instanceof AST_Scope));
var safe_to_inject = compressor.toplevel.vars || !(scope instanceof AST_Toplevel);
return all(fn.argnames, function(arg) {
- return arg.__unused || safe_to_inject && !scope.var_names()[arg.name];
+ return arg.__unused
+ || safe_to_inject
+ && !catches[arg.name]
+ && !scope.var_names()[arg.name];
}) && scope;
}