avoid duplicate property names in object literals under "use strict" (#2818)
fixes #2816
This commit is contained in:
@@ -893,7 +893,7 @@ merge(Compressor.prototype, {
|
||||
sequencesize_2(statements, compressor);
|
||||
}
|
||||
if (compressor.option("join_vars")) {
|
||||
join_consecutive_vars(statements, compressor);
|
||||
join_consecutive_vars(statements);
|
||||
}
|
||||
if (compressor.option("collapse_vars")) {
|
||||
collapse(statements, compressor);
|
||||
@@ -1746,8 +1746,14 @@ merge(Compressor.prototype, {
|
||||
prop = prop.evaluate(compressor);
|
||||
}
|
||||
if (prop instanceof AST_Node) break;
|
||||
prop = "" + prop;
|
||||
if (compressor.has_directive("use strict")) {
|
||||
if (!all(def.value.properties, function(node) {
|
||||
return node.key != prop && node.key.name != prop;
|
||||
})) break;
|
||||
}
|
||||
def.value.properties.push(make_node(AST_ObjectKeyVal, node, {
|
||||
key: "" + prop,
|
||||
key: prop,
|
||||
value: node.right
|
||||
}));
|
||||
exprs.shift();
|
||||
@@ -1756,7 +1762,7 @@ merge(Compressor.prototype, {
|
||||
return trimmed && exprs;
|
||||
}
|
||||
|
||||
function join_consecutive_vars(statements, compressor) {
|
||||
function join_consecutive_vars(statements) {
|
||||
var defs;
|
||||
for (var i = 0, j = -1, len = statements.length; i < len; i++) {
|
||||
var stat = statements[i];
|
||||
|
||||
Reference in New Issue
Block a user