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