diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js index c4012031..fc65e426 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1599,9 +1599,13 @@ merge(Compressor.prototype, { } if (node instanceof AST_SymbolRef) { if (symbol_in_lvalues(node, parent)) { - return !parent || parent.operator != "=" || parent.left !== node; + return !(parent instanceof AST_Assign && parent.operator == "=" && parent.left === node); } - return side_effects && may_modify(node); + if (side_effects && may_modify(node)) return true; + var def = node.definition(); + return (in_try || def.scope.resolve() !== scope) && !all(def.orig, function(sym) { + return !(sym instanceof AST_SymbolConst); + }); } if (node instanceof AST_This) return symbol_in_lvalues(node, parent); if (node instanceof AST_VarDef) { |