fix collapse_vars on switch (#2578)
This commit is contained in:
@@ -873,14 +873,12 @@ merge(Compressor.prototype, {
|
||||
node.expression = node.expression.transform(scanner);
|
||||
for (var i = 0, len = node.body.length; !abort && i < len; i++) {
|
||||
var branch = node.body[i];
|
||||
if (branch instanceof AST_Case)
|
||||
if (branch instanceof AST_Case) {
|
||||
branch.expression = branch.expression.transform(scanner);
|
||||
if (side_effects || !replace_all) break;
|
||||
}
|
||||
}
|
||||
for (i = 0; !abort && i < len; i++) {
|
||||
var branch = node.body[i];
|
||||
for (var j = 0, len2 = branch.body.length; j < len2; j++)
|
||||
branch.body[j] = branch.body[j].transform(scanner);
|
||||
}
|
||||
abort = true;
|
||||
return node;
|
||||
}
|
||||
// Skip nodes before `candidate` as quickly as possible
|
||||
|
||||
@@ -1749,7 +1749,7 @@ for_init: {
|
||||
}
|
||||
}
|
||||
|
||||
switch_case: {
|
||||
switch_case_1: {
|
||||
options = {
|
||||
collapse_vars: true,
|
||||
unused: true,
|
||||
@@ -1777,6 +1777,62 @@ switch_case: {
|
||||
}
|
||||
}
|
||||
|
||||
switch_case_2: {
|
||||
options = {
|
||||
collapse_vars: true,
|
||||
}
|
||||
input: {
|
||||
var a = 1, b = 2;
|
||||
switch (b++) {
|
||||
case b:
|
||||
var c = a;
|
||||
var a;
|
||||
break;
|
||||
}
|
||||
console.log(a);
|
||||
}
|
||||
expect: {
|
||||
var a = 1, b = 2;
|
||||
switch (b++) {
|
||||
case b:
|
||||
var c = a;
|
||||
var a;
|
||||
break;
|
||||
}
|
||||
console.log(a);
|
||||
}
|
||||
expect_stdout: "1"
|
||||
}
|
||||
|
||||
switch_case_3: {
|
||||
options = {
|
||||
collapse_vars: true,
|
||||
}
|
||||
input: {
|
||||
var a = 1, b = 2;
|
||||
switch (a) {
|
||||
case a:
|
||||
var b;
|
||||
break;
|
||||
case b:
|
||||
break;
|
||||
}
|
||||
console.log(b);
|
||||
}
|
||||
expect: {
|
||||
var a = 1, b = 2;
|
||||
switch (a) {
|
||||
case a:
|
||||
var b;
|
||||
break;
|
||||
case b:
|
||||
break;
|
||||
}
|
||||
console.log(b);
|
||||
}
|
||||
expect_stdout: "2"
|
||||
}
|
||||
|
||||
issue_27: {
|
||||
options = {
|
||||
collapse_vars: true,
|
||||
|
||||
Reference in New Issue
Block a user