WXL
4 天以前 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1
node_modules/terser/lib/compress/index.js
@@ -146,6 +146,7 @@
    defaults,
    HOP,
    make_node,
    make_void_0,
    makePredicate,
    MAP,
    remove,
@@ -562,7 +563,7 @@
                set_flag(exp.expression, SQUEEZED);
                self.args = [];
            } else {
                return make_node(AST_Undefined, self);
                return make_void_0(self);
            }
        }
    });
@@ -590,12 +591,7 @@
                    : make_node(AST_EmptyStatement, node);
            }
            return make_node(AST_SimpleStatement, node, {
                body: node.value || make_node(AST_UnaryPrefix, node, {
                    operator: "void",
                    expression: make_node(AST_Number, node, {
                        value: 0
                    })
                })
                body: node.value || make_void_0(node)
            });
        }
        if (node instanceof AST_Class || node instanceof AST_Lambda && node !== self) {
@@ -1198,8 +1194,8 @@
        return make_node(self.body.CTOR, self, {
            value: make_node(AST_Conditional, self, {
                condition   : self.condition,
                consequent  : self.body.value || make_node(AST_Undefined, self.body),
                alternative : self.alternative.value || make_node(AST_Undefined, self.alternative)
                consequent  : self.body.value || make_void_0(self.body),
                alternative : self.alternative.value || make_void_0(self.alternative),
            }).transform(compressor)
        }).optimize(compressor);
    }
@@ -1752,7 +1748,7 @@
            const value = condition.evaluate(compressor);
    
            if (value === 1 || value === true) {
                return make_node(AST_Undefined, self);
                return make_void_0(self).optimize(compressor);
            }
        }
    }    
@@ -2114,6 +2110,10 @@
    ) {
        return make_sequence(self, [e, make_node(AST_True, self)]).optimize(compressor);
    }
    // Short-circuit common `void 0`
    if (self.operator === "void" && e instanceof AST_Number && e.value === 0) {
        return unsafe_undefined_ref(self, compressor) || self;
    }
    var seq = self.lift_sequences(compressor);
    if (seq !== self) {
        return seq;
@@ -2124,7 +2124,7 @@
            self.expression = e;
            return self;
        } else {
            return make_node(AST_Undefined, self).optimize(compressor);
            return make_void_0(self).optimize(compressor);
        }
    }
    if (compressor.in_boolean_context()) {
@@ -2310,7 +2310,7 @@
            if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor)
                : !(expr instanceof AST_PropAccess && compressor.option("ie8"))) {
                self.right = expr;
                self.left = make_node(AST_Undefined, self.left).optimize(compressor);
                self.left = make_void_0(self.left).optimize(compressor);
                if (self.operator.length == 2) self.operator += "=";
            }
        } else if (compressor.option("typeofs")
@@ -2323,7 +2323,7 @@
            if (expr instanceof AST_SymbolRef ? expr.is_declared(compressor)
                : !(expr instanceof AST_PropAccess && compressor.option("ie8"))) {
                self.left = expr;
                self.right = make_node(AST_Undefined, self.right).optimize(compressor);
                self.right = make_void_0(self.right).optimize(compressor);
                if (self.operator.length == 2) self.operator += "=";
            }
        } else if (self.left instanceof AST_SymbolRef
@@ -2964,7 +2964,8 @@
    return lhs instanceof AST_SymbolRef || lhs.TYPE === self.TYPE;
}
def_optimize(AST_Undefined, function(self, compressor) {
/** Apply the `unsafe_undefined` option: find a variable called `undefined` and turn `self` into a reference to it. */
function unsafe_undefined_ref(self, compressor) {
    if (compressor.option("unsafe_undefined")) {
        var undef = find_variable(compressor, "undefined");
        if (undef) {
@@ -2977,14 +2978,15 @@
            return ref;
        }
    }
    return null;
}
def_optimize(AST_Undefined, function(self, compressor) {
    var symbolref = unsafe_undefined_ref(self, compressor);
    if (symbolref) return symbolref;
    var lhs = compressor.is_lhs();
    if (lhs && is_atomic(lhs, self)) return self;
    return make_node(AST_UnaryPrefix, self, {
        operator: "void",
        expression: make_node(AST_Number, self, {
            value: 0
        })
    });
    return make_void_0(self);
});
def_optimize(AST_Infinity, function(self, compressor) {
@@ -3671,7 +3673,7 @@
                }
            }
            if (retValue instanceof AST_Expansion) break FLATTEN;
            retValue = retValue instanceof AST_Hole ? make_node(AST_Undefined, retValue) : retValue;
            retValue = retValue instanceof AST_Hole ? make_void_0(retValue) : retValue;
            if (!flatten) values.unshift(retValue);
            while (--i >= 0) {
                var value = elements[i];
@@ -3710,7 +3712,7 @@
        if (parent instanceof AST_UnaryPrefix && parent.operator === "delete") {
            return make_node_from_constant(0, self);
        }
        return make_node(AST_Undefined, self);
        return make_void_0(self).optimize(compressor);
    }
    if (
        self.expression instanceof AST_PropAccess