fix corner case in booleans (#5470)

fixes #5469
This commit is contained in:
Alex Lam S.L
2022-05-25 22:33:50 +01:00
committed by GitHub
parent 5979b195fe
commit 59b23b8c13
2 changed files with 37 additions and 10 deletions

View File

@@ -9174,17 +9174,20 @@ Compressor.prototype.compress = function(node) {
child = parent;
parent = compressor.parent(level++);
if (parent instanceof AST_Binary) {
var op = parent.operator;
if (!lazy_op[op]) return;
var left = parent.left;
if (left === child) continue;
if (match(left)) switch (op) {
case "&&":
node[negated ? "falsy" : "truthy"] = true;
switch (child) {
case parent.left:
if (lazy_op[parent.operator]) continue;
break;
case "||":
case "??":
node[negated ? "truthy" : "falsy"] = true;
case parent.right:
if (match(parent.left)) switch (parent.operator) {
case "&&":
node[negated ? "falsy" : "truthy"] = true;
break;
case "||":
case "??":
node[negated ? "truthy" : "falsy"] = true;
break;
}
break;
}
} else if (parent instanceof AST_Conditional) {