}
}));
} else {
- value = fixed.optimize(compressor);
- if (value === fixed) value = value.transform(new TreeTransformer(function(node, descend) {
+ value = fixed.optimize(compressor).transform(new TreeTransformer(function(node, descend) {
if (node instanceof AST_Scope) return node;
node = node.clone();
descend(node, this);
}
else if (node instanceof U.AST_Object) {
// first property's value
- var expr = node.properties[0] instanceof U.AST_ObjectKeyVal && node.properties[0].value;
+ var expr = node.properties[0];
+ if (expr instanceof U.AST_ObjectKeyVal) {
+ expr = expr.value;
+ } else if (expr instanceof U.AST_Spread) {
+ expr = expr.expression;
+ } else if (expr && expr.key instanceof U.AST_Node) {
+ expr = expr.key;
+ } else {
+ expr = null;
+ }
if (expr) {
node.start._permute++;
CHANGED = true;
}
}
}
- else if (node instanceof U.AST_Spread) {
- node.start._permute++;
- CHANGED = true;
- return node.expression;
- }
else if (node instanceof U.AST_Switch) {
var expr = [
node.expression, // switch expression