@@ -1424,8 +1424,9 @@ merge(Compressor.prototype, {
|
||||
if (!--replaced) abort = true;
|
||||
if (is_lhs(node, multi_replacer.parent())) return node;
|
||||
def.replaced++;
|
||||
value_def.replaced--;
|
||||
return rvalue.clone();
|
||||
var ref = rvalue.clone();
|
||||
value_def.references.push(ref);
|
||||
return ref;
|
||||
}
|
||||
// Skip (non-executed) functions and (leading) default case in switch statements
|
||||
if (node instanceof AST_Default || node instanceof AST_Scope) return node;
|
||||
@@ -5433,7 +5434,7 @@ merge(Compressor.prototype, {
|
||||
vars.set(def.name.name, def);
|
||||
++vars_found;
|
||||
});
|
||||
var seq = node.to_assignments(compressor);
|
||||
var seq = node.to_assignments();
|
||||
var p = tt.parent();
|
||||
if (p instanceof AST_ForIn && p.init === node) {
|
||||
if (seq) return seq;
|
||||
@@ -6716,21 +6717,19 @@ merge(Compressor.prototype, {
|
||||
AST_Let.DEFMETHOD("remove_initializers", remove_initializers);
|
||||
AST_Var.DEFMETHOD("remove_initializers", remove_initializers);
|
||||
|
||||
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);
|
||||
a.push(make_node(AST_Assign, def, {
|
||||
AST_Definitions.DEFMETHOD("to_assignments", function() {
|
||||
var assignments = this.definitions.reduce(function(a, defn) {
|
||||
var def = defn.name.definition();
|
||||
if (defn.value) {
|
||||
var name = make_node(AST_SymbolRef, defn.name, defn.name);
|
||||
a.push(make_node(AST_Assign, defn, {
|
||||
operator : "=",
|
||||
left : name,
|
||||
right : def.value
|
||||
right : defn.value
|
||||
}));
|
||||
if (reduce_vars) name.definition().fixed = false;
|
||||
def.references.push(name);
|
||||
}
|
||||
def = def.name.definition();
|
||||
def.eliminated++;
|
||||
def.replaced--;
|
||||
return a;
|
||||
}, []);
|
||||
if (assignments.length == 0) return null;
|
||||
|
||||
@@ -5115,3 +5115,29 @@ issue_4233: {
|
||||
}
|
||||
expect_stdout: "number"
|
||||
}
|
||||
|
||||
issue_4259: {
|
||||
options = {
|
||||
collapse_vars: true,
|
||||
functions: true,
|
||||
reduce_vars: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
var a = function b() {
|
||||
var c = b;
|
||||
for (b in c);
|
||||
};
|
||||
a();
|
||||
console.log(typeof a);
|
||||
}
|
||||
expect: {
|
||||
function a() {
|
||||
for (a in a);
|
||||
}
|
||||
a();
|
||||
console.log(typeof a);
|
||||
}
|
||||
expect_stdout: "function"
|
||||
}
|
||||
|
||||
@@ -1999,7 +1999,7 @@ issue_1606: {
|
||||
var a, b;
|
||||
function g(){};
|
||||
b = 2;
|
||||
x(b);
|
||||
x(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user