fix corner case in collapse_vars (#3972)

fixes #3971
This commit is contained in:
Alex Lam S.L
2020-06-08 17:09:21 +01:00
committed by GitHub
parent 491d6ce1d5
commit 5561d3e7f3
2 changed files with 52 additions and 5 deletions

View File

@@ -1258,7 +1258,7 @@ merge(Compressor.prototype, {
col: node.start.col
});
if (candidate instanceof AST_UnaryPostfix) {
delete candidate.expression.fixed;
lhs.definition().fixed = false;
return make_node(AST_UnaryPrefix, candidate, candidate);
}
if (candidate instanceof AST_VarDef) {

View File

@@ -7977,7 +7977,7 @@ mangleable_var: {
expect_stdout: "PASS"
}
issue_3884: {
issue_3884_1: {
options = {
collapse_vars: true,
evaluate: true,
@@ -7995,9 +7995,33 @@ issue_3884: {
console.log(a, b);
}
expect: {
var a = 100;
++a;
console.log(a, 32);
var a = 100, b = 1;
b <<= ++a;
console.log(a, b);
}
expect_stdout: "101 32"
}
issue_3884_2: {
options = {
collapse_vars: true,
evaluate: true,
passes: 3,
reduce_vars: true,
side_effects: true,
toplevel: true,
unused: true,
}
input: {
var a = 100, b = 1;
{
a++ + a || a;
b <<= a;
}
console.log(a, b);
}
expect: {
console.log(101, 32);
}
expect_stdout: "101 32"
}
@@ -8195,3 +8219,26 @@ operator_in: {
}
expect_stdout: "PASS"
}
issue_3971: {
options = {
collapse_vars: true,
evaluate: true,
reduce_vars: true,
side_effects: true,
toplevel: true,
}
input: {
var a = 0 == typeof f, b = 0;
{
var a = void (a++ + (b |= a));
}
console.log(b);
}
expect: {
var a = 0 == typeof f, b = 0;
var a = void (b |= ++a);
console.log(b);
}
expect_stdout: "1"
}