diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/compress.js | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js index cfa8f230..e75d7c96 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -592,9 +592,10 @@ merge(Compressor.prototype, { // Restrict var replacement to constants if side effects encountered. if (side_effects_encountered |= lvalues_encountered) continue; + var value_has_side_effects = var_decl.value.has_side_effects(compressor); // Non-constant single use vars can only be replaced in same scope. if (ref.scope !== self) { - side_effects_encountered |= var_decl.value.has_side_effects(compressor); + side_effects_encountered |= value_has_side_effects; continue; } @@ -620,6 +621,7 @@ merge(Compressor.prototype, { || (parent instanceof AST_If && node !== parent.condition) || (parent instanceof AST_Conditional && node !== parent.condition) || (node instanceof AST_SymbolRef + && value_has_side_effects && !are_references_in_scope(node.definition(), self)) || (parent instanceof AST_Binary && (parent.operator == "&&" || parent.operator == "||") |