fix corner case in hoist_props (#5069)
This commit is contained in:
@@ -347,7 +347,7 @@ merge(Compressor.prototype, {
|
||||
});
|
||||
|
||||
function read_property(obj, node) {
|
||||
var key = node.getProperty();
|
||||
var key = node.get_property();
|
||||
if (key instanceof AST_Node) return;
|
||||
var value;
|
||||
if (obj instanceof AST_Array) {
|
||||
@@ -7597,12 +7597,11 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
}));
|
||||
self.transform(new TreeTransformer(function(node, descend) {
|
||||
if (node instanceof AST_Binary) return replace("right");
|
||||
if (node instanceof AST_PropAccess) {
|
||||
if (!(node.expression instanceof AST_SymbolRef)) return;
|
||||
var defs = defs_by_id[node.expression.definition().id];
|
||||
if (!defs) return;
|
||||
var def = defs.get(node.getProperty());
|
||||
var def = defs.get(node.get_property());
|
||||
var sym = make_node(AST_SymbolRef, node, {
|
||||
name: def.name,
|
||||
scope: node.expression.scope,
|
||||
@@ -7611,18 +7610,9 @@ merge(Compressor.prototype, {
|
||||
sym.reference();
|
||||
return sym;
|
||||
}
|
||||
if (node instanceof AST_Unary) {
|
||||
if (unary_side_effects[node.operator]) return;
|
||||
return replace("expression");
|
||||
}
|
||||
|
||||
function replace(prop) {
|
||||
var sym = node[prop];
|
||||
if (!(sym instanceof AST_SymbolRef)) return;
|
||||
if (!(sym.definition().id in defs_by_id)) return;
|
||||
var opt = node.clone();
|
||||
opt[prop] = make_node(AST_Object, sym, { properties: [] });
|
||||
return opt;
|
||||
if (node instanceof AST_SymbolRef) {
|
||||
if (!(node.definition().id in defs_by_id)) return;
|
||||
return make_node(AST_Object, node, { properties: [] });
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user