@@ -8284,6 +8284,7 @@ Compressor.prototype.compress = function(node) {
|
|||||||
if (prop instanceof AST_Spread) return prop;
|
if (prop instanceof AST_Spread) return prop;
|
||||||
var key = prop_keys[index];
|
var key = prop_keys[index];
|
||||||
if (key instanceof AST_Node) return prop;
|
if (key instanceof AST_Node) return prop;
|
||||||
|
if (key === "__proto__") return prop;
|
||||||
if (drop_keys.has(key)) {
|
if (drop_keys.has(key)) {
|
||||||
var mapped = drop_keys.get(key);
|
var mapped = drop_keys.get(key);
|
||||||
if (!mapped) return prop;
|
if (!mapped) return prop;
|
||||||
@@ -8317,7 +8318,10 @@ Compressor.prototype.compress = function(node) {
|
|||||||
if (value.has_side_effects(compressor) && prop.value.match_symbol(function(node) {
|
if (value.has_side_effects(compressor) && prop.value.match_symbol(function(node) {
|
||||||
return node instanceof AST_PropAccess;
|
return node instanceof AST_PropAccess;
|
||||||
})) break;
|
})) break;
|
||||||
value = make_node(AST_Sub, node, {
|
value = is_identifier_string(prop.key) ? make_node(AST_Dot, node, {
|
||||||
|
expression: value,
|
||||||
|
property: prop.key,
|
||||||
|
}) : make_node(AST_Sub, node, {
|
||||||
expression: value,
|
expression: value,
|
||||||
property: make_node_from_constant(prop.key, prop),
|
property: make_node_from_constant(prop.key, prop),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2293,7 +2293,7 @@ issue_5340_3: {
|
|||||||
}
|
}
|
||||||
expect: {
|
expect: {
|
||||||
var a;
|
var a;
|
||||||
(function() {})(a = true["p"]);
|
(function() {})(a = true.p);
|
||||||
console.log(a);
|
console.log(a);
|
||||||
}
|
}
|
||||||
expect_stdout: "undefined"
|
expect_stdout: "undefined"
|
||||||
|
|||||||
@@ -1382,7 +1382,7 @@ side_effects_object: {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
expect: {
|
expect: {
|
||||||
var a = null, c = (console, 42["c"]);
|
var a = null, c = (console, 42..c);
|
||||||
try {
|
try {
|
||||||
c[a = "PASS"];
|
c[a = "PASS"];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -1684,7 +1684,7 @@ singleton_1: {
|
|||||||
expect: {
|
expect: {
|
||||||
var b, a = "P"[0], o = {};
|
var b, a = "P"[0], o = {};
|
||||||
o.p = [ "FAIL"["1"] ][0];
|
o.p = [ "FAIL"["1"] ][0];
|
||||||
o.q = { foo: "S"[0] }["foo"];
|
o.q = { foo: "S"[0] }.foo;
|
||||||
[ b = "S" ] = [];
|
[ b = "S" ] = [];
|
||||||
console.log(a + o.p + o.q + b);
|
console.log(a + o.p + o.q + b);
|
||||||
}
|
}
|
||||||
@@ -3886,3 +3886,54 @@ issue_5651: {
|
|||||||
expect_stdout: true
|
expect_stdout: true
|
||||||
node_version: ">=6"
|
node_version: ">=6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5843_1: {
|
||||||
|
options = {
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var { p: a } = {
|
||||||
|
__proto__: {
|
||||||
|
p: "PASS",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a = {
|
||||||
|
__proto__: {
|
||||||
|
p: "PASS",
|
||||||
|
},
|
||||||
|
}.p;
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_5843_2: {
|
||||||
|
options = {
|
||||||
|
side_effects: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a;
|
||||||
|
({ p: a } = {
|
||||||
|
__proto__: {
|
||||||
|
p: "PASS",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a;
|
||||||
|
a = {
|
||||||
|
__proto__: {
|
||||||
|
p: "PASS",
|
||||||
|
},
|
||||||
|
}.p;
|
||||||
|
console.log(a);
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ hoist_exports_2: {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
expect: {
|
expect: {
|
||||||
let e, a = 42["foo"];
|
let e, a = 42..foo;
|
||||||
function f(t, { [e]: o }) {
|
function f(t, { [e]: o }) {
|
||||||
t(o, f);
|
t(o, f);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1386,7 +1386,7 @@ issue_5076_1: {
|
|||||||
expect: {
|
expect: {
|
||||||
var a;
|
var a;
|
||||||
console.log("PASS"),
|
console.log("PASS"),
|
||||||
a = 42["a"];
|
a = 42..a;
|
||||||
}
|
}
|
||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=6"
|
node_version: ">=6"
|
||||||
|
|||||||
Reference in New Issue
Block a user