From a80b228d8be37eb6585bca01c6fb5468db5bea42 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Thu, 16 Mar 2017 12:03:30 +0800 Subject: fix `hoist_vars` on `reduce_vars` (#1607) `hoist_vars` converts variable declarations into plain assignments, which then confuses `reduce_vars` fixes #1606 --- lib/compress.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/compress.js') diff --git a/lib/compress.js b/lib/compress.js index b3004fb5..49b618e7 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1986,7 +1986,7 @@ merge(Compressor.prototype, { vars.set(def.name.name, def); ++vars_found; }); - var seq = node.to_assignments(); + var seq = node.to_assignments(compressor); var p = tt.parent(); if (p instanceof AST_ForIn && p.init === node) { if (seq == null) { @@ -2579,7 +2579,8 @@ merge(Compressor.prototype, { this.definitions.forEach(function(def){ def.value = null }); }); - AST_Definitions.DEFMETHOD("to_assignments", function(){ + AST_Definitions.DEFMETHOD("to_assignments", function(compressor){ + var reduce_vars = compressor.option("reduce_vars"); var assignments = this.definitions.reduce(function(a, def){ if (def.value) { var name = make_node(AST_SymbolRef, def.name, def.name); @@ -2588,6 +2589,7 @@ merge(Compressor.prototype, { left : name, right : def.value })); + if (reduce_vars) name.definition().fixed = false; } return a; }, []); -- cgit v1.2.3