fix duplicate declarations
This commit is contained in:
parent
2bdf3dc1c0
commit
f0f3c472c3
|
|
@ -277,7 +277,7 @@ merge(Compressor.prototype, {
|
||||||
}
|
}
|
||||||
if (node instanceof AST_VarDef) {
|
if (node instanceof AST_VarDef) {
|
||||||
var d = node.name.definition();
|
var d = node.name.definition();
|
||||||
if (safe_to_assign(d, node.value)) {
|
if (d.fixed === undefined || safe_to_assign(d, node.value)) {
|
||||||
if (node.value) {
|
if (node.value) {
|
||||||
d.fixed = function() {
|
d.fixed = function() {
|
||||||
return node.value;
|
return node.value;
|
||||||
|
|
@ -297,9 +297,7 @@ merge(Compressor.prototype, {
|
||||||
&& node.operator == "="
|
&& node.operator == "="
|
||||||
&& node.left instanceof AST_SymbolRef) {
|
&& node.left instanceof AST_SymbolRef) {
|
||||||
var d = node.left.definition();
|
var d = node.left.definition();
|
||||||
if (HOP(safe_ids, d.id)
|
if (safe_to_assign(d, node.right)) {
|
||||||
&& safe_to_read(d)
|
|
||||||
&& safe_to_assign(d, node.right)) {
|
|
||||||
d.references.push(node.left);
|
d.references.push(node.left);
|
||||||
d.fixed = function() {
|
d.fixed = function() {
|
||||||
return node.right;
|
return node.right;
|
||||||
|
|
@ -325,6 +323,7 @@ merge(Compressor.prototype, {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (node instanceof AST_Function) {
|
if (node instanceof AST_Function) {
|
||||||
|
push();
|
||||||
var iife;
|
var iife;
|
||||||
if (!node.name
|
if (!node.name
|
||||||
&& (iife = tw.parent()) instanceof AST_Call
|
&& (iife = tw.parent()) instanceof AST_Call
|
||||||
|
|
@ -340,7 +339,6 @@ merge(Compressor.prototype, {
|
||||||
mark(d, true);
|
mark(d, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
push();
|
|
||||||
descend();
|
descend();
|
||||||
pop();
|
pop();
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -451,7 +449,8 @@ merge(Compressor.prototype, {
|
||||||
}
|
}
|
||||||
|
|
||||||
function safe_to_assign(def, value) {
|
function safe_to_assign(def, value) {
|
||||||
if (def.fixed === undefined) return true;
|
if (!HOP(safe_ids, def.id)) return false;
|
||||||
|
if (!safe_to_read(def)) return false;
|
||||||
if (def.fixed === false) return false;
|
if (def.fixed === false) return false;
|
||||||
if (def.fixed != null && (!value || def.references.length > 0)) return false;
|
if (def.fixed != null && (!value || def.references.length > 0)) return false;
|
||||||
return !def.orig.some(function(sym) {
|
return !def.orig.some(function(sym) {
|
||||||
|
|
|
||||||
|
|
@ -571,7 +571,7 @@ inner_var_label: {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner_var_for: {
|
inner_var_for_1: {
|
||||||
options = {
|
options = {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
|
@ -600,6 +600,29 @@ inner_var_for: {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inner_var_for_2: {
|
||||||
|
options = {
|
||||||
|
evaluate: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
!function() {
|
||||||
|
var a = 1;
|
||||||
|
for (var b = 1; --b;) var a = 2;
|
||||||
|
console.log(a);
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
!function() {
|
||||||
|
a = 1;
|
||||||
|
for (var b = 1; --b;) var a = 2;
|
||||||
|
console.log(a);
|
||||||
|
}();
|
||||||
|
}
|
||||||
|
expect_stdout: "1"
|
||||||
|
}
|
||||||
|
|
||||||
inner_var_for_in_1: {
|
inner_var_for_in_1: {
|
||||||
options = {
|
options = {
|
||||||
evaluate: true,
|
evaluate: true,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user