diff --git a/lib/compress.js b/lib/compress.js index 5bb9bcb0..c911de81 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -6412,7 +6412,7 @@ Compressor.prototype.compress = function(node) { Object.keys(assign_in_use).forEach(function(id) { var assigns = assign_in_use[id]; if (!assigns) { - delete assign_in_use[id]; + assign_in_use[id] = undefined; return; } assigns = assigns.reduce(function(in_use, assigns) { @@ -6433,7 +6433,7 @@ Compressor.prototype.compress = function(node) { if (assigns.length == in_use.length) { assign_in_use[id] = in_use; } else { - delete assign_in_use[id]; + assign_in_use[id] = undefined; } }); // pass 3: we should drop declarations not in_use @@ -6834,10 +6834,10 @@ Compressor.prototype.compress = function(node) { } case 1: if (tail.length == 0) { - var id = head[0].name.definition().id; - if (id in for_ins) { + var for_in = for_ins[head[0].name.definition().id]; + if (for_in) { node.definitions = head; - for_ins[id].init = node; + for_in.init = node; break; } } @@ -6932,7 +6932,7 @@ Compressor.prototype.compress = function(node) { var def = sym.definition(); if (def.id in in_use_ids) return; log(sym, "Dropping unused loop variable {name}"); - if (for_ins[def.id] === node) delete for_ins[def.id]; + if (for_ins[def.id] === node) for_ins[def.id] = undefined; var body = []; var value = node.object.drop_side_effect_free(compressor); if (value) { @@ -7115,7 +7115,7 @@ Compressor.prototype.compress = function(node) { if (node instanceof AST_ForIn) { if (node.init instanceof AST_SymbolRef && scope === self) { var id = node.init.definition().id; - if (!(id in for_ins)) for_ins[id] = node; + if (!for_ins[id]) for_ins[id] = node; } if (!drop_vars || !compressor.option("loops")) return; if (!is_empty(node.body)) return;