@@ -8484,7 +8484,8 @@ Compressor.prototype.compress = function(node) {
|
|||||||
&& self.find_variable(sym.name) === sym.definition();
|
&& self.find_variable(sym.name) === sym.definition();
|
||||||
})) return node;
|
})) return node;
|
||||||
node.definitions.forEach(function(defn) {
|
node.definitions.forEach(function(defn) {
|
||||||
vars.set(defn.name.name, defn);
|
var name = defn.name.name;
|
||||||
|
if (!vars.has(name)) vars.set(name, defn);
|
||||||
});
|
});
|
||||||
var seq = node.to_assignments();
|
var seq = node.to_assignments();
|
||||||
if (p instanceof AST_ForEnumeration && p.init === node) {
|
if (p instanceof AST_ForEnumeration && p.init === node) {
|
||||||
@@ -8511,13 +8512,14 @@ Compressor.prototype.compress = function(node) {
|
|||||||
return !ref.in_arg;
|
return !ref.in_arg;
|
||||||
})) vars.del(argname.name);
|
})) vars.del(argname.name);
|
||||||
});
|
});
|
||||||
vars.each(function(defn, name) {
|
vars.each(function(defn) {
|
||||||
|
var name = defn.name;
|
||||||
defn = defn.clone();
|
defn = defn.clone();
|
||||||
defn.name = defn.name.clone();
|
defn.name = name.clone();
|
||||||
defn.value = null;
|
defn.value = null;
|
||||||
defns.push(defn);
|
defns.push(defn);
|
||||||
vars.set(name, defn);
|
var orig = name.definition().orig;
|
||||||
defn.name.definition().orig.unshift(defn.name);
|
orig.splice(orig.indexOf(name), 0, defn.name);
|
||||||
});
|
});
|
||||||
if (defns.length > 0) hoisted.push(make_node(AST_Var, self, { definitions: defns }));
|
if (defns.length > 0) hoisted.push(make_node(AST_Var, self, { definitions: defns }));
|
||||||
}
|
}
|
||||||
@@ -10348,8 +10350,8 @@ Compressor.prototype.compress = function(node) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
def.references.push(name);
|
def.references.push(name);
|
||||||
}
|
|
||||||
def.assignments++;
|
def.assignments++;
|
||||||
|
}
|
||||||
def.eliminated++;
|
def.eliminated++;
|
||||||
def.single_use = false;
|
def.single_use = false;
|
||||||
return a;
|
return a;
|
||||||
|
|||||||
@@ -3107,3 +3107,31 @@ issue_5774: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=6"
|
node_version: ">=6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5863: {
|
||||||
|
options = {
|
||||||
|
collapse_vars: true,
|
||||||
|
hoist_vars: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(typeof function f(a = function() {
|
||||||
|
f = 42;
|
||||||
|
return f;
|
||||||
|
}()) {
|
||||||
|
var f;
|
||||||
|
var f;
|
||||||
|
return a;
|
||||||
|
}());
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(typeof function f(a = function() {
|
||||||
|
f = 42;
|
||||||
|
return f;
|
||||||
|
}()) {
|
||||||
|
var f;
|
||||||
|
return a;
|
||||||
|
}());
|
||||||
|
}
|
||||||
|
expect_stdout: "function"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user