@@ -1578,9 +1578,11 @@ merge(Compressor.prototype, {
|
|||||||
}
|
}
|
||||||
if (parent instanceof AST_Binary) {
|
if (parent instanceof AST_Binary) {
|
||||||
if (lazy_op[parent.operator] && parent.left !== node) {
|
if (lazy_op[parent.operator] && parent.left !== node) {
|
||||||
var grandparent = scanner.parent(level + 1);
|
do {
|
||||||
if (!(grandparent instanceof AST_Binary)) return node;
|
node = parent;
|
||||||
if (grandparent.operator != parent.operator) return node;
|
parent = scanner.parent(++level);
|
||||||
|
} while (parent instanceof AST_Binary && parent.operator == node.operator);
|
||||||
|
return node;
|
||||||
}
|
}
|
||||||
return find_stop_value(parent, level + 1);
|
return find_stop_value(parent, level + 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7308,3 +7308,40 @@ substitution_unary: {
|
|||||||
"true 42 42",
|
"true 42 42",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_3626_1: {
|
||||||
|
options = {
|
||||||
|
collapse_vars: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a = "foo", b = 42;
|
||||||
|
a.p && (b = a) && a;
|
||||||
|
console.log(a, b);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a = "foo", b = 42;
|
||||||
|
a.p && (b = a) && a;
|
||||||
|
console.log(a, b);
|
||||||
|
}
|
||||||
|
expect_stdout: "foo 42"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_3626_2: {
|
||||||
|
options = {
|
||||||
|
collapse_vars: true,
|
||||||
|
conditionals: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
var a = "foo", b = 42, c = null;
|
||||||
|
if (a && a.p)
|
||||||
|
if (b = a)
|
||||||
|
c++ + a;
|
||||||
|
console.log(a, b, c);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
var a = "foo", b = 42, c = null;
|
||||||
|
a && a.p && (b = a) && c++ + a;
|
||||||
|
console.log(a, b, c);
|
||||||
|
}
|
||||||
|
expect_stdout: "foo 42 null"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user