@@ -845,7 +845,7 @@ merge(Compressor.prototype, {
|
|||||||
if (init instanceof AST_Definitions) {
|
if (init instanceof AST_Definitions) {
|
||||||
init.definitions[0].name.match_symbol(function(node) {
|
init.definitions[0].name.match_symbol(function(node) {
|
||||||
if (node instanceof AST_SymbolDeclaration) node.definition().fixed = false;
|
if (node instanceof AST_SymbolDeclaration) node.definition().fixed = false;
|
||||||
});
|
}, true);
|
||||||
} else if (init instanceof AST_SymbolRef) {
|
} else if (init instanceof AST_SymbolRef) {
|
||||||
init.definition().fixed = false;
|
init.definition().fixed = false;
|
||||||
}
|
}
|
||||||
@@ -1188,11 +1188,12 @@ merge(Compressor.prototype, {
|
|||||||
AST_Node.DEFMETHOD("match_symbol", function(predicate) {
|
AST_Node.DEFMETHOD("match_symbol", function(predicate) {
|
||||||
return predicate(this);
|
return predicate(this);
|
||||||
});
|
});
|
||||||
AST_Destructured.DEFMETHOD("match_symbol", function(predicate) {
|
AST_Destructured.DEFMETHOD("match_symbol", function(predicate, allow_computed_keys) {
|
||||||
var found = false;
|
var found = false;
|
||||||
var tw = new TreeWalker(function(node) {
|
var tw = new TreeWalker(function(node) {
|
||||||
if (found) return true;
|
if (found) return true;
|
||||||
if (node instanceof AST_DestructuredKeyVal) {
|
if (node instanceof AST_DestructuredKeyVal) {
|
||||||
|
if (!allow_computed_keys && node.key instanceof AST_Node) return found = true;
|
||||||
node.value.walk(tw);
|
node.value.walk(tw);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -7045,7 +7046,7 @@ merge(Compressor.prototype, {
|
|||||||
name: node,
|
name: node,
|
||||||
value: make_value(compressor, node)
|
value: make_value(compressor, node)
|
||||||
}));
|
}));
|
||||||
});
|
}, true);
|
||||||
});
|
});
|
||||||
return dropped;
|
return dropped;
|
||||||
};
|
};
|
||||||
@@ -7107,7 +7108,7 @@ merge(Compressor.prototype, {
|
|||||||
if (node instanceof AST_SymbolDeclaration) {
|
if (node instanceof AST_SymbolDeclaration) {
|
||||||
return !node.fixed_value() || may_overlap(compressor, node.definition());
|
return !node.fixed_value() || may_overlap(compressor, node.definition());
|
||||||
}
|
}
|
||||||
});
|
}, true);
|
||||||
}) ? to_var(self) : self;
|
}) ? to_var(self) : self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9061,6 +9062,7 @@ merge(Compressor.prototype, {
|
|||||||
def.fixed = false;
|
def.fixed = false;
|
||||||
return strip_assignment();
|
return strip_assignment();
|
||||||
} else if (parent instanceof AST_VarDef) {
|
} else if (parent instanceof AST_VarDef) {
|
||||||
|
if (!(parent.name instanceof AST_SymbolDeclaration)) continue;
|
||||||
if (parent.name.definition() !== def) continue;
|
if (parent.name.definition() !== def) continue;
|
||||||
if (in_try(level, parent)) break;
|
if (in_try(level, parent)) break;
|
||||||
def.fixed = false;
|
def.fixed = false;
|
||||||
|
|||||||
@@ -1341,3 +1341,65 @@ issue_4282: {
|
|||||||
expect_stdout: true
|
expect_stdout: true
|
||||||
node_version: ">=6"
|
node_version: ">=6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4284_1: {
|
||||||
|
options = {
|
||||||
|
dead_code: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a, {
|
||||||
|
0: b,
|
||||||
|
} = a = "foo";
|
||||||
|
console.log(a, b);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a, {
|
||||||
|
0: b,
|
||||||
|
} = a = "foo";
|
||||||
|
console.log(a, b);
|
||||||
|
}
|
||||||
|
expect_stdout: "foo f"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4284_2: {
|
||||||
|
options = {
|
||||||
|
collapse_vars: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a, {
|
||||||
|
[console.log(a)]: b,
|
||||||
|
} = (a = "PASS", 0);
|
||||||
|
var c = a;
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a, {
|
||||||
|
[console.log(a)]: b,
|
||||||
|
} = (a = "PASS", 0);
|
||||||
|
var c = a;
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4284_3: {
|
||||||
|
options = {
|
||||||
|
collapse_vars: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a, b;
|
||||||
|
({
|
||||||
|
[console.log(a)]: b,
|
||||||
|
} = (a = "PASS", 0));
|
||||||
|
var c = a;
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a, b;
|
||||||
|
({
|
||||||
|
[console.log(a)]: b,
|
||||||
|
} = (a = "PASS", 0));
|
||||||
|
var c = a;
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user