fix corner case in spread (#4370)
This commit is contained in:
@@ -10051,13 +10051,14 @@ merge(Compressor.prototype, {
|
||||
found = true;
|
||||
var exp = prop.expression;
|
||||
if (compressor.option("spread") && exp instanceof AST_Object && all(exp.properties, function(prop) {
|
||||
return !(prop instanceof AST_ObjectGetter
|
||||
|| prop instanceof AST_ObjectSetter && prop.key instanceof AST_Node
|
||||
|| prop instanceof AST_Spread);
|
||||
return !(prop instanceof AST_ObjectGetter || prop instanceof AST_Spread);
|
||||
})) {
|
||||
changed = true;
|
||||
exp.properties.forEach(function(prop) {
|
||||
if (prop instanceof AST_ObjectKeyVal) process(prop);
|
||||
process(prop instanceof AST_ObjectSetter ? make_node(AST_ObjectKeyVal, prop, {
|
||||
key: prop.key,
|
||||
value: make_node(AST_Undefined, prop).optimize(compressor)
|
||||
}) : prop);
|
||||
});
|
||||
} else {
|
||||
generated = true;
|
||||
|
||||
@@ -250,6 +250,31 @@ reduce_vars_2: {
|
||||
node_version: ">=6"
|
||||
}
|
||||
|
||||
convert_setter: {
|
||||
options = {
|
||||
objects: true,
|
||||
spread: true,
|
||||
}
|
||||
input: {
|
||||
var o = {
|
||||
...{
|
||||
set PASS(v) {},
|
||||
},
|
||||
};
|
||||
for (var k in o)
|
||||
console.log(k, o[k]);
|
||||
}
|
||||
expect: {
|
||||
var o = {
|
||||
PASS: void 0,
|
||||
};
|
||||
for (var k in o)
|
||||
console.log(k, o[k]);
|
||||
}
|
||||
expect_stdout: "PASS undefined"
|
||||
node_version: ">=8"
|
||||
}
|
||||
|
||||
keep_getter_1: {
|
||||
options = {
|
||||
side_effects: true,
|
||||
@@ -773,9 +798,7 @@ issue_4363: {
|
||||
}
|
||||
expect: {
|
||||
({
|
||||
...{
|
||||
set [console.log("PASS")](v) {},
|
||||
},
|
||||
[console.log("PASS")]: void 0,
|
||||
});
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
|
||||
Reference in New Issue
Block a user